99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0001 
Version 2.0 (Weiand 1985)     Options : LCSFPF                                  
[0001]               ***********************************************************
[0002]                      TITL 'RXB 2015'
[0003]               ***********************************************************
[0004]                      GROM >C000
[0005]               ***********************************************************
[0006]                      TITL 'EQUATES ALCS-359'
[0007]               ***********************************************************
[0008] 2002          FSLOC  EQU  >2002             Free Start LOCation in ERAM
[0009]               *                             Free end must follow it.
[0010] 2006          INITF  EQU  >2006             INIT flag address INIT has be
[0011]               *                             called if ERAM (INITF)=>AA55
[0012]               * Free end initialized to >4000, (>FFF8 for debugger)
[0013]               * Free start is initialized to the first useable memory
[0014]               *  location for assembly language code
[0015] A040          CPUBAS EQU  >A040             Expansion RAM base
[0016]               ***********************************************************
[0017]               *           GROM ADDRESSES
[0018]               ***********************************************************
[0019]               * GROM >6000
[0020] 6038          MZMSG  EQU  >6038             Start of message area
[0021] 6040          MSGFST EQU  >6040
[0022] 6065          MSG10  EQU  >6065
[0023] 6076          MSG14  EQU  >6076
[0024] 6083          MSG16  EQU  >6083
[0025] 609C          MSG17  EQU  >609C
[0026] 60AD          MSG19  EQU  >60AD
[0027] 60BB          MSG24  EQU  >60BB
[0028] 60D2          MSG25  EQU  >60D2
[0029] 60E4          MSG28  EQU  >60E4
[0030] 60F9          MSG34  EQU  >60F9
[0031] 6110          MSG36  EQU  >6110
[0032] 611C          MSG39  EQU  >611C
[0033] 6128          MSG40  EQU  >6128
[0034] 6137          MSG43  EQU  >6137
[0035] 6148          MSG44  EQU  >6148
[0036] 6159          MSG47  EQU  >6159
[0037] 616F          MSG48  EQU  >616F
[0038] 6189          MSG49  EQU  >6189
[0039] 6198          MSG51  EQU  >6198
[0040] 61AD          MSG54  EQU  >61AD
[0041] 61BE          MSG57  EQU  >61BE
[0042] 61CC          MSG60  EQU  >61CC
[0043] 61DB          MSG61  EQU  >61DB
[0044] 61EB          MSG67  EQU  >61EB
[0045] 61FA          MSG69  EQU  >61FA
[0046] 6215          MSG70  EQU  >6215
[0047] 622D          MSG74  EQU  >622D
[0048] 623A          MSG78  EQU  >623A
[0049] 624D          MSG79  EQU  >624D
[0050] 6257          MSG81  EQU  >6257
[0051] 626F          MSG83  EQU  >626F
[0052] 627B          MSG84  EQU  >627B
[0053] 6286          MSG97  EQU  >6286
[0054] 629B          MSG109 EQU  >629B
[0055] 62A6          MSG130 EQU  >62A6
[0056] 62B0          MSG135 EQU  >62B0
[0057] 62C5          MSG62  EQU  >62C5
[0058] 630A          MSGCIS EQU  >630A
[0059] 6319          MSGCF  EQU  >6319
[0060] 6324          MSG56  EQU  >6324
[0061] 6372          TOPLEV EQU  >6372             RXB PATCH for XBPGM
[0062] 63A5          SZNEW  EQU  >63A5             RXB PATCH for NEW
[0063] 63DD          TOPL15 EQU  >63DD             * Return from OLD or SAVE
[0064] 6433          TOPL42 EQU  >6433
[0065] 6462          TOPL55 EQU  >6462

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0002 
EQUATES ALCS-359
[0066] 64EF          ILLST  EQU  >64EF
[0067] 65C9          SZSIZE EQU  >65C9             RXB PATCH for SIZE
[0068] 66CF          EDITLN EQU  >66CF             * Edit a line into a program
[0069] 6A8A          READL3 EQU  >6A8A
[0070] 6D78          G6D78  EQU  >6D78             * GKXB ERR routine
[0071] 6E0E          ERPRNT EQU  >6E0E
[0072] 6E1B          ERPNT5 EQU  >6E1B
[0073] 6FBA          DISO   EQU  >6FBA
[0074]               * GROM >8000
[0075] 802A          GRMLST EQU  >802A
[0076] 9CEA          CHARS  EQU  >9CEA             GROM ADDRESS CHAR DEFINITIONS
[0077] 9800          ALCEND EQU  >9800             RXB moved INIT here
[0078]               * GROM >A000
[0079] A00A          ASC    EQU  >A00A
[0080] A01C          LNKRTN EQU  >A01C
[0081] AE00          MZSUB  EQU  >AE00             Module SPRITE branch table ad
[0082]               * GROM >E000
[0083] E025          GE025  EQU  >E025             RXB PATCH for EA
[0084]               ***********************************************************
[0085]               *    EQUATES FOR ROUTINES FROM OTHER GROM SECTIONS
[0086] 6014          INITPG EQU  >6014             Initialize program space
[0087] 6016          SPRINT EQU  >6016             Initialize sprites
[0088] 601A          TOPL10 EQU  >601A             Return to main and re-init
[0089] 601C          CHRTAB EQU  >601C             Load default character set
[0090] 601E          SZRUN  EQU  >601E
[0091] 6022          KILSYM EQU  >6022             KILL SYMBOL TABLE ROUTINE
[0092] 602E          AUTO1  EQU  >602E             Get arguments for LIST comman
[0093] 6030          TOPL02 EQU  >6030             RTN address for failing AUTOL
[0094] 6034          GRSUB1 EQU  >6034             Read data (2 bytes) from ERAM
[0095] 6036          GWSUB  EQU  >6036             Write a few bytes of data to
[0096] 6048          MSGBRK EQU  >6048             * BREAKPOINT
[0097] 6053          MSGTA  EQU  >6053             Message "try again"
[0098] 6A74          LLIST  EQU  >6A74             List a line
[0099] 6A76          READLN EQU  >6A76             Read a line from keyboard
[0100] 6A78          CHKEND EQU  >6A78             Check end of statement
[0101] 6A7E          ENTER  EQU  >6A7E
[0102] 6A80          ENT09  EQU  >6A80
[0103] 6A82          WARNZZ EQU  >6A82             WARNING MESSAGE ROUTINE
[0104] 6A84          ERRZZ  EQU  >6A84             ERROR MESSAGE ROUTINE
[0105] 6A84          ERRZ   EQU  >6A84             ERRor routine
[0106] 6A86          READL1 EQU  >6A86             Read a line from keyboard
[0107] 8000          DISPL1 EQU  >8000
[0108] 8002          DELET  EQU  >8002
[0109] 8004          PRINT  EQU  >8004
[0110] 8006          INPUT  EQU  >8006
[0111] 8008          OPEN   EQU  >8008
[0112] 800A          CLOSE  EQU  >800A
[0113] 800C          RESTOR EQU  >800C
[0114] 800E          NREAD  EQU  >800E
[0115] 8012          CLSALL EQU  >8012
[0116] 801C          EOF    EQU  >801C
[0117] 801E          ACCEPT EQU  >801E
[0118] 8020          SRDATA EQU  >8020
[0119] 8022          REC    EQU  >8022
[0120] 802C          GRSUB2 EQU  >802C
[0121] 802E          GRSUB3 EQU  >802E
[0122] 8030          LINPUT EQU  >8030
[0123] A012          CONVER EQU  >A012             CONVERT WITH WARNING
[0124] 0010          CPL    EQU  >0010             Call Program Link
[0125] 0012          RPL    EQU  >0012             Return Program Link
[0126] 0022          GRINT  EQU  >0022             Greatest integer
[0127] 0032          ATNZZ  EQU  >0032             Arctangent routine
[0128]               ***********************************************************
[0129]               *    Equates for routine in MONITOR

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0003 
EQUATES ALCS-359
[0130] 0010          DSR    EQU  >10               CALL DEVICE SERVICE ROUTINE
[0131] 0034          TONE1  EQU  >34               ACCEPT TONE
[0132] 0036          TONE2  EQU  >36               BAD TONE
[0133] 0018          CHAR2Z EQU  >18               CHARACTER TABLE ADDRESS small
[0134] 004A          CHAR3Z EQU  >4A               CHARACTER TABLE ADDRESS
[0135]               ***********************************************************
[0136]               *    Equates for XMLs
[0137] 0000          SYNCHK EQU  >00               SYNCHK XML selector
[0138] 0001          FILSPC EQU  >01               Fill-space utility
[0139] 0001          PARCOM EQU  >01               PARse to a COMma selector
[0140] 0002          CSTRIN EQU  >02               Copy-string utility
[0141] 0002          RANGE  EQU  >02               RANGE selector
[0142] 0003          SEETWO EQU  >03               SEETWO XML selector
[0143] 0006          FADD   EQU  >06               Floating ADD
[0144] 0008          FMUL   EQU  >08               Floating MULtiply
[0145] 0009          FDIV   EQU  >09               Floating DIVide
[0146] 000A          FCOMP  EQU  >0A               Floating COMPare
[0147] 000B          SADD   EQU  >0B               Stack ADD
[0148] 000C          SSUB   EQU  >0C               Stack SUBtract
[0149] 0010          CSNUM  EQU  >10               Convert String to Number
[0150] 0012          CFI    EQU  >12               Convert to two byte integer
[0151] 0012          FLTINT EQU  >12               Convert floating to integer
[0152] 0020          ALSUP  EQU  >20               XML to user AssembLy SUBrouti
[0153] 0070          COMPCT EQU  >70               PREFORM A GARBAGE COLLECTION
[0154] 0071          GETSTR EQU  >71               SYSTEM GET STRING
[0155] 0072          MEMCHK EQU  >72               MEMORY check routine: VDP
[0156] 0073          XCNS   EQU  >73               Convert number to string
[0157]               * Warning Defualt changed in >0159
[0158] 0074          PARSE  EQU  >74               Parse a value
[0159] 0075          CONT   EQU  >75               Continue parsing
[0160] 0076          EXECG  EQU  >76               Execute a XB stmt or program
[0161] 0077          VPUSH  EQU  >77               Push on value stack
[0162] 0078          VPOP   EQU  >78               Pop off value stack
[0163] 0079          PGMCHR EQU  >79               GET PROGRAM CHARACTER
[0164] 007A          SYM    EQU  >7A               Find SYMBOL entry
[0165] 007B          SMB    EQU  >7B               Find symbol table entry
[0166] 007C          ASSGNV EQU  >7C               Assign VARIABLE
[0167] 007D          SCHSYM EQU  >7D               Search symbol table
[0168] 007E          SPEED  EQU  >7E               SPEED UP XML
[0169] 007F          CRUNCH EQU  >7F               Crunch an input line
[0170] 0080          CIF    EQU  >80               Convert INTEGER to FLOATING P
[0171] 0082          RTNB   EQU  >82               Return
[0172] 0083          SCROLL EQU  >83               SCROLL THE SCREEN
[0173] 0084          IO     EQU  >84               IO utility (KW table search)
[0174] 0085          GREAD  EQU  >85               READ DATA FROM ERAM
[0175] 0086          GWRITE EQU  >86               WRITE DATA TO ERAM
[0176] 0087          DELREP EQU  >87               REMOVE CONTENT FROM VDP/ERAM
[0177] 0088          MVDN   EQU  >88               MOVE DATA IN VDP/ERAM
[0178] 0089          MVUP   EQU  >89               MOVE DATA IN VDP/ERAM
[0179] 008A          VGWITE EQU  >8A               MOVE DATA FROM VDP TO ERAM
[0180] 008B          GVWITE EQU  >8B               WRITE DATA FROM GRAM TO VRAM
[0181] 008C          GREAD1 EQU  >8C               READ DATA FROM ERAM
[0182] 008E          GDTECT EQU  >8E               ERAM DETECT&ROM PAGE 1 ENABLE
[0183] 008F          SCNSMT EQU  >8F               SCAN STATEMENT FOR PRESCAN
[0184]               ***********************************************************
[0185]               *    Temporary workspaces in EDIT
[0186] 8300          CPUOFF EQU  >8300             CPU RAM OFFSET
[0187] 8300          VAR0   EQU  >8300            TEMPORARY
[0188] 8300          SP00   EQU  >8300            SPRITE value
[0189] 8300          PTFBSL EQU  >8300            Ptr to 1st byte in SPEAK list
[0190] 8300          PHLEN  EQU  >8300            PHrom data LENgth
[0191] 8301          VARV   EQU  >8301            TEMPORARY
[0192] 8301          PHRADD EQU  >8301            PHRom ADDress
[0193] 8302          ACCUM  EQU  >8302            # OF BYTES ACCUMULATOR (4 BYTE

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0004 
EQUATES ALCS-359
[0194] 8302          STPT   EQU  >8302            TWO BYTES
[0195] 8302          MNUM   EQU  >8302            Ussually a counter
[0196] 8302          AAA1   EQU  >8302
[0197] 8302          SP02   EQU  >8302            SPRITE value
[0198] 8302          PTLBSL EQU  >8302            Ptr to last byte in SPEAK list
[0199] 8302          CHKSUM EQU  >8302            Check sum word
[0200] 8304          PC     EQU  >8304            Address in ERAM to load next v
[0201] 8304          VARY   EQU  >8304
[0202] 8304          PABPTR EQU  >8304            Pointer to current PAB
[0203] 8304          SP04   EQU  >8304            SPRITE value
[0204] 8304          PTEBSL EQU  >8304            Ptr to end byte in SPEAK list
[0205]               * NOTE: PTEBSL points to the end of the temporary speak lis
[0206]               *       whereas PTLBSL points to the last byte actually use
[0207]               *       i.e.    PTFBSL <= PTLBSL <= PTEBSL
[0208] 8306          VARY2  EQU  >8306            Use in MVDN only
[0209] 8306          DFLTLM EQU  >8306            Default array limit (10)
[0210] 8306          CCPPTR EQU  >8306            OFFSET WITHIN RECORED (1)
[0211]               *                             or Pointer to current column
[0212] 8306          SP06   EQU  >8306            SPRITE value
[0213] 8306          PTFCIS EQU  >8306            Ptr to 1st character in string
[0214] 8306          OFFADD EQU  >8306            OFFADD of relocatable programs
[0215]               *                             loaded into ERAM.
[0216] 8307          RECLEN EQU  >8307            LENGTH OF CURRENT RECORD (1)
[0217] 8308          CCPADR EQU  >8308            RAM address of current refs
[0218]               *                             or Actual buffer address or c
[0219] 8308          VARC   EQU  >8308
[0220] 8308          CCPADD EQU  >8308            RAM address of current color
[0221] 8308          CCC1   EQU  >8308
[0222] 8308          SPSAL  EQU  >8308            Location of sprite attribute l
[0223] 8308          PTCCIS EQU  >8308            Ptr to current character in st
[0224] 8308          FRESTA EQU  >8308            Start of free memory in ERAM
[0225]               *                         the end of the reloacatable progr
[0226]               *                         (start of next program) is stored
[0227]               *                         in FRESTA once a "0" tag is found
[0228] 830A          FREEND EQU  >830A            End of free memory in ERAM -
[0229]               *                         points to 1st character of last
[0230]               *                         entry into routine name table.
[0231]               *                         (must follow FRESTA!!!)
[0232] 830A          CALIST EQU  >830A            Call list for resolving refs
[0233] 830A          RAMPTR EQU  >830A            Pointer for crunching
[0234] 830A          STADDR EQU  >830A            Start address - usually for co
[0235] 830A          SPTMP  EQU  >830A            Temporary variable
[0236] 830A          PTLCIS EQU  >830A            Ptr to last character in strin
[0237] 830B          VAR2   EQU  >830B
[0238] 830C          BYTES  EQU  >830C            BYTE COUNTER
[0239]               *                             or String length for GETSTR
[0240] 830C          NMPTR  EQU  >830C            Pointer save for pscan
[0241] 830C          BBB1   EQU  >830C
[0242] 830C          PTFCIP EQU  >830C            Ptr to 1st character in phrase
[0243] 830E          BUFPNT EQU  >830E            I/O buffer pointer
[0244] 830E          CHSAV  EQU  >830E
[0245] 830E          CURINC EQU  >830E            Increment for auto-num mode
[0246] 830E          VAR4   EQU  >830E
[0247] 830E          PTCCIP EQU  >830E            Ptr to current character in ph
[0248] 8310          TOPSTK EQU  >8310            Top of data stack pointer
[0249] 8310          VAR5   EQU  >8310            VAR5 through VAR5+3 used in RA
[0250] 8310          PTLCIP EQU  >8310            Ptr to last character in phras
[0251] 8310          TAG    EQU  >8310            TAG FIELD
[0252] 8310          OLDS   EQU  >8310            FLAG BITS
[0253] 8310          TBLPTR EQU  >8310            Table pointer (CHARPAT)
[0254] 8311          FIELD  EQU  >8311            Value after TAG field, 4 bytes
[0255]               *                             (must follow TAG!!!)
[0256] 8311          VAR6   EQU  >8311
[0257] 8312          LINUM  EQU  >8312            Used to determine end of scan

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0005 
EQUATES ALCS-359
[0258] 8312          PTFBPH EQU  >8312            Ptr to 1st byte in PHrom
[0259] 8312          VAR7   EQU  >8312            Used in CHARLY
[0260] 8312          COUNT  EQU  >8312            FLAG BITS
[0261] 8312          STRPTR EQU  >8312            String pointer (CHARPAT)
[0262] 8314          NMLEN  EQU  >8314            Current line for auto-num
[0263] 8314          CURLIN EQU  >8314            Current line for auto-num
[0264]               *                             or Starting line number for L
[0265] 8314          PTCCPH EQU  >8314            Ptr to current byte in PHrom
[0266] 8314          VAR9   EQU  >8314            Used in CHARLY
[0267] 8314          STORE  EQU  >8314            FLAG BITS
[0268] 8315          INDEXC EQU  >8315            Byte index for computing check
[0269] 8316          VARB   EQU  >8316            Source address for XML MVUP
[0270] 8316          XFLAG  EQU  >8316            SCAN FLAG-BITS USED AS BELOW
[0271] 8316          PTLCPH EQU  >8316            Ptr to last byte in PHrom
[0272] 8316          TEMP   EQU  >8316            FLAG BITS
[0273] 8316          DFLAG  EQU  >8316            Disk/Hard FLAG
[0274] 8317          DEVNUM EQU  >8317            DEVice NUMber for Hard drive
[0275] 8317          DSRFLG EQU  >8317            INTERNAL =60, EXTERNAL =0 (1)
[0276] 8317          OPTFLG EQU  >8317            Option flag byte during OPEN
[0277] 8317          FORNET EQU  >8317            Nesting level of for/next
[0278] 8317          FNUM   EQU  >8317            Current file number for search
[0279]               ***********************************************************
[0280]               *    Permanent workspace variables
[0281] 8318          STRSP  EQU  >8318            String space begining
[0282] 831A          STREND EQU  >831A            String space ending
[0283] 831C          SREF   EQU  >831C            Temporary string pointer
[0284] 831E          SMTSRT EQU  >831E            Start of current statement
[0285] 8320          VARW   EQU  >8320            Screen address (CURSOR)
[0286] 8322          ERRCOD EQU  >8322            Return error code from ALC
[0287] 8324          STVSPT EQU  >8324            Value-stack base
[0288] 8326          RTNG   EQU  >8326            Return vector from 9900 code
[0289] 8328          NUDTAB EQU  >8328            Start of NUD table
[0290] 832A          VARA   EQU  >832A            Ending display location
[0291] 832C          PGMPTR EQU  >832C            Program text pointer (TOKEN)
[0292] 832E          EXTRAM EQU  >832E            Line number table pointer
[0293] 8330          STLN   EQU  >8330            Start of line number table
[0294] 8332          ENLN   EQU  >8332            End of line number table
[0295] 8334          DATA   EQU  >8334            Data pointer for READ
[0296] 8336          LNBUF  EQU  >8336            Line table pointer for READ
[0297] 8338          INTRIN EQU  >8338            Add of intrinsic poly constant
[0298] 833A          SUBTAB EQU  >833A            Subprogram symbol table
[0299] 833C          IOSTRT EQU  >833C            PAB list/Start of I/O chain
[0300] 833E          SYMTAB EQU  >833E            Symbol table pointer
[0301] 8340          FREPTR EQU  >8340            Free space pointer
[0302] 8342          CHAT   EQU  >8342            Current charater/token
[0303] 8343          BASE   EQU  >8343            OPTION BASE value
[0304] 8344          PRGFLG EQU  >8344            Program/imperative flag
[0305] 8345          FLAG   EQU  >8345            General 8-bit flag
[0306] 8346          BUFLEV EQU  >8346            Crunch-buffer destruction leve
[0307] 8348          LSUBP  EQU  >8348            Last subprogram block on stack
[0308]               * FAC  EQU  >834A            Floating-point ACcurmulator
[0309] 834A          CCHAR  EQU  >834A            Current character
[0310] 834B          FAC1   EQU  FAC+1
[0311] 834B          SPLFLG EQU  >834B            SPelL out phrase FLaG
[0312] 834C          FAC2   EQU  FAC+2
[0313] 834C          AAA    EQU  FAC+2
[0314] 834C          TOTTIM EQU  >834C            TOTal wait TIMe
[0315]               * NOTE: DATAD must follow immediately after TOTTIM. The
[0316]               *       routine STDATA is counting on this fact!
[0317] 834D          FAC3   EQU  FAC+3
[0318] 834D          DATAAD EQU  >834D            Speech DATA ADdress
[0319] 834E          FAC4   EQU  FAC+4
[0320] 834E          CCC    EQU  FAC+4
[0321] 834E          FFF    EQU  FAC+4

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0006 
EQUATES ALCS-359
[0322] 834F          FAC5   EQU  FAC+5
[0323] 834F          PTLCIL EQU  >834F            Pointer To Last Character In L
[0324] 8350          FAC6   EQU  FAC+6
[0325] 8350          BBB    EQU  FAC+6
[0326] 8350          EEE    EQU  FAC+6
[0327] 8351          FAC7   EQU  FAC+7
[0328] 8351          TIMLEN EQU  >8351             TIMe LENgth of timing charact
[0329] 8352          FAC8   EQU  FAC+8
[0330] 8352          PHADDR EQU  >8352             PHrom ADDRess
[0331] 8353          FAC9   EQU  FAC+9
[0332] 8354          FAC10  EQU  FAC+10
[0333] 8354          DDD1   EQU  FAC+10
[0334] 8354          TEMP1  EQU  >8354            TEMPorary CPU location 1
[0335] 8355          FAC11  EQU  FAC+11
[0336] 8356          FAC12  EQU  FAC+12
[0337] 8356          FFF1   EQU  FAC+12
[0338] 8356          TEMP2  EQU  >8356            TEMPorary CPU location 2
[0339] 8357          FAC13  EQU  FAC+13
[0340] 8358          FAC14  EQU  FAC+14
[0341] 8358          EEE1   EQU  FAC+14
[0342] 8358          READ   EQU  >8358            Address of speech peripheral
[0343]               *                             READ byte interface
[0344] 8359          FAC15  EQU  FAC+15
[0345] 835A          FAC16  EQU  FAC+16
[0346] 835A          WRITE  EQU  >835A            Address of speech peripheral
[0347]               *                             WRITE byte interface
[0348] 835B          FAC17  EQU  FAC+17
[0349]               * ARG  EQU  >835C            Floating-point ARGument
[0350] 835D          ARG1   EQU  ARG+1
[0351] 835D          PHDATA EQU  >835D            PHrom DATA
[0352] 835E          ARG2   EQU  ARG+2
[0353] 835E          PTCBED EQU  >835E            Ptr To Current Byte Ext Data
[0354] 835E          INDEX  EQU  >835E            Label or program ID - 8 bytes
[0355] 835F          ARG3   EQU  ARG+3
[0356] 8360          ARG4   EQU  ARG+4
[0357] 8360          LENCST EQU  >8360            LEN of Current ext data STring
[0358] 8361          ARG5   EQU  ARG+5
[0359] 8362          ARG6   EQU  ARG+6
[0360] 8362          LENWST EQU  >8362            LEN of Whole ext data STring
[0361] 8364          STRLEN EQU  >8364            STRing LENgth
[0362] 8364          TEMP4  EQU  >8364
[0363] 8366          TEMP5  EQU  >8366
[0364]               * NOTE: BYTE1, BYTE2, and BYTE3 must be in consecutive memo
[0365]               *       locations, and in the following order for SPGET to
[0366]               *       work!
[0367] 8366          BYTE1  EQU  >8366            BYTE 1
[0368] 8367          BYTE2  EQU  >8367            BYTE 2
[0369] 8368          BYTE3  EQU  >8368            BYTE 3
[0370] 8368          TEMP6  EQU  >8368
[0371] 8369          SPKSTS EQU  >8369            SPeaK StaTus
[0372] 836C          FPERAD EQU  >836C            Value stack pointer
[0373]               * VSPTR  EQU  >836E          Value stack pointer
[0374]               ***********************************************************
[0375]               *    GPL Status Block
[0376] 8372          STACK  EQU  >8372             STACK FOR DATA
[0377] 8373          SUBSTK EQU  >8373             SUBROUTINE STACK
[0378] 8374          KEYBD  EQU  >8374             KEYBOARD SELCTION
[0379] 8375          RKEY   EQU  >8375             KEY CODE
[0380] 8375          SIGNZ  EQU  >8375
[0381] 8376          EXPZ   EQU  >8376             Exponent in floating-point
[0382] 8376          JOYY   EQU  >8376             JOYSTICK Y POSITION
[0383] 8377          JOYX   EQU  >8377             JOYSTICK X POSITION
[0384] 8378          RANDOM EQU  >8378             RANDOM NUMBER GENERATOR
[0385] 8379          TIMER  EQU  >8379             TIMING REGISTER

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0007 
EQUATES ALCS-359
[0386] 837A          MOTION EQU  >837A             NUMBER OF MOVING SPRITES
[0387] 837B          VDPSTS EQU  >837B             VDP STATUS REGISTER
[0388] 837B          VDPSTT EQU  >837B             VDP STATUS REGISTER
[0389] 837C          ERCODE EQU  >837C             STATUS REGISTER
[0390] 837D          CB     EQU  >837D             Character Buffer
[0391]               ***********************************************************
[0392] 8384          RAMTOP EQU  >8384            Highest address in ERAM
[0393]               *                             = 0 if ERAM not present
[0394] 8386          RAMFRE EQU  >8386            Free pointer in the ERAM
[0395] 8388          RSTK   EQU  >8388            Subroutine stack base
[0396]               *                             (Starts at >8A)
[0397] 8389          RAMFLG EQU  >8389            ERAM flag
[0398] 8389          GRAMFL EQU  >8389            GRAM / VDP flag
[0399] 83AF          STKMIN EQU  >83AF            Base of data stack
[0400] 83BD          STKMAX EQU  >83BD            Top of data stack
[0401] 83C2          GKFLAG EQU  >83C2            GKXB flag for PEEK/LOAD VDP/GR
[0402] 83CE          PRTNFN EQU  >83CE            Sound - previous tone finished
[0403]               ***********************************************************
[0404]               *    VDP addresses
[0405] 02E0          SCRNBS EQU  >02E0             Screen base addr for last lin
[0406] 02E2          NLNADD EQU  >02E2             New LiNe ADDress
[0407] 02FE          ENDSCR EQU  >02FE             END of SCReen address
[0408] 0300          SPRSAL EQU  >0300             Sprite attribute list
[0409] 0371          LODFLG EQU  >0371             Auto-boot needed flag
[0410] 0372          START  EQU  >0372             Line to start execution at
[0411]               * Temporary
[0412] 0374          NOTONE EQU  >0374             NO-TONE for SIZE in ACCEPT us
[0413]               *                              in FLMGRS (4 bytes used)
[0414] 0376          SYMBOL EQU  >0376             Saved symbol table pointer
[0415] 0378          ONECHR EQU  >0378             Used for CHRZ
[0416] 0379          VRMSND EQU  >0379             Sound blocks
[0417] 0382          SPGMPT EQU  >0382             Saved PGMPTR for continue
[0418] 0384          SBUFLV EQU  >0384             Saved BUFLEV for contiue
[0419] 0386          SEXTRM EQU  >0386             Saved EXTRAM for continue
[0420] 0388          SAVEVP EQU  >0388             Saved VSPRT for continue
[0421] 038A          ERRLN  EQU  >038A             On-error line pointer
[0422] 038C          BUFSRT EQU  >038C             Edit recall start addr (VARW)
[0423] 038E          BUFEND EQU  >038E             Edit recall end addr (VARA)
[0424] 0390          CSNTMP EQU  >0390             Use as temporary stored place
[0425]               *                          or CSN TEMPORARY FOR FAC12
[0426] 0392          TABSAV EQU  >0392             Saved main symbol table ponte
[0427] 0394          AUTTMP EQU  >0394             AUTOLD TEMPORARY IN SIDE ERRZ
[0428] 0396          SLSUBP EQU  >0396             Saved LSUBP for continue
[0429] 0398          SFLAG  EQU  >0398             Saved on-warning/break bits
[0430] 039A          SSTEMP EQU  >039A             To save subprogram program ta
[0431] 039C          SSTMP2 EQU  >039C             Same as above. Used in SUBPRO
[0432] 039E          MRGPAB EQU  >039E             MERGEd temporary for pab ptr
[0433] 03A0          RNDX2  EQU  >03A0             Random number generator seed
[0434] 03A5          RNDX1  EQU  >03A5             Random number generator seed
[0435] 03AA          INPUTP EQU  >03AA             INPUT TEMPORARY FOR PTR TO PR
[0436] 03AA          SPNUM  EQU  >03AA             Sprite number temporary, also
[0437]               *                              in INPUTP in FLMGR
[0438] 03AC          ACCVRW EQU  >03AC             Temoporary used in ERRZZ, als
[0439]               *                              used in FLMGRS
[0440]               *                             or temporary for @VARW, @VARA
[0441] 03AE          ACCVRA EQU  >03AE             TRY AGAIN
[0442] 03B0          VALIDP EQU  >03B0             Use as two values passing fro
[0443]               *                          or PTR TO STANDARD STRING IN VAL
[0444] 03B2          VALIDL EQU  >03B2             VALIDATE code to READL1
[0445]               *                          or Length of string in validate
[0446] 03B4          SIZCCP EQU  >03B4             SIZE TEMPORARY FOR CCPADR
[0447] 03B6          SIZREC EQU  >03B6             SIZE TEMPORARY FOR RECLEN
[0448]               *                            Also used as temporary in RELO
[0449]               *----------------------------------------------------------

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0008 
EQUATES ALCS-359
[0450]               * Added 6/8/81 for NOPSCAN feature
[0451] 03B7          PSCFG  EQU  >03B7
[0452]               *----------------------------------------------------------
[0453] 03B7          ACCTRY EQU  >03B7             ACCEPT "TRY AGAIN" FLAG
[0454] 03B8          SIZXPT EQU  >03B8             Save XPT in SIZE when "try ag
[0455] 03B9          SAPROT EQU  >03B9             PROTECTION flag in SAVE
[0456] 03BA          CSNTP1 EQU  >03BA             CSN TEMPORARY FOR FAC10
[0457]               *----------------------------------------------------------
[0458]               *    Flag 0:  99/4  console, 5/29/81
[0459]               *         1:  99/4A console
[0460] 03BB          CONFLG EQU  >03BB
[0461]               *----------------------------------------------------------
[0462] 03BC          OLDTOP EQU  >03BC             Temporary used in ERRZZ, also
[0463]               *                          or Old top of memory for RELOCA
[0464] 03BC          CPTEMP EQU  >03BC             CCPPTR, RECLEN temp in INPUT
[0465] 03BE          NEWTOP EQU  >03BE             New top of memory for RELOCA
[0466] 03C0          VROAZ  EQU  >03C0             Temporary roll-out area
[0467] 0780          SPRVB  EQU  >0780             Sprite velocity block.
[0468] 0820          CRNBUF EQU  >0820             CRuNch BUFfer address
[0469] 08BE          CRNEND EQU  >08BE             CRuNch buffer END
[0470] 08C0          RECBUF EQU  >08C0             Edit RECall BUFfer
[0471] 0958          VRAMVS EQU  >0958             Default base of value stack
[0472]               ***********************************************************
[0473]               *    IMMEDITATE VALUES
[0474] 0000          NUMBR  EQU  >00               NUMERIC validate
[0475] 0002          LISTZ  EQU  >02
[0476] 0003          X2     EQU  >03
[0477] 0005          OLDZ   EQU  >05
[0478] 0006          RESEQZ EQU  >06
[0479] 0007          SAVEZ  EQU  >07
[0480] 0008          MERGEZ EQU  >08
[0481] 000A          DWNARR EQU  >0A
[0482] 000B          UPARR  EQU  >0B
[0483] 000D          CHRTN  EQU  >0D
[0484] 0020          BKGD   EQU  >20               BACKGROUND CHARACTER
[0485] 0060          OFFSET EQU  >60               OFFSET FOR VIDEO TABLES
[0486] 0065          STRVAL EQU  >65               Value in accum. is string val
[0487] 0065          STRING EQU  >65               String ID # for FAC
[0488]               ***********************************************************
[0489]               * Editting command equates & keys or symbols
[0490] 0002          BREAK  EQU  >02               Break key
[0491] 0003          DLETE  EQU  >03               Delete key
[0492] 0004          INSRT  EQU  >04               Insert key
[0493] 0006          RECALL EQU  >06               Edit-buffer recall
[0494] 0007          CLRLN  EQU  >07               Clear-line key
[0495] 0008          BACK   EQU  >08               Back-space key
[0496] 0009          FORW   EQU  >09               Forward-space key
[0497] 000A          DOWN   EQU  >0A               Down-arrow key
[0498] 000B          UPMV   EQU  >0B               Up-arrow key
[0499] 001C          VWIDTH EQU  >1C               Screen width (PRINT)
[0500] 0020          SPACE  EQU  >20               Space key
[0501] 0022          QUOTE  EQU  >22               "
[0502] 0023          NUMBER EQU  >23               #
[0503] 0024          DOLLAR EQU  >24               $
[0504] 007E          CURSOR EQU  >1E+OFFSET        CURSOR
[0505] 007F          EDGECH EQU  >1F+OFFSET        EDGE character
[0506] 002B          PLUS   EQU  >2B               +
[0507] 002C          COMMAT EQU  >2C               ,
[0508] 002D          MINUS  EQU  >2D               -
[0509] 002D          HYPEN  EQU  >2D               +
[0510] 002E          PERIOD EQU  >2E               .
[0511] 0030          ZERO   EQU  >30               0
[0512] 0039          NINE   EQU  >39               9
[0513] 003A          COLON  EQU  >3A               :

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0009 
EQUATES ALCS-359
[0514] 003B          SEMICO EQU  >3B               ;
[0515] 003C          LESS   EQU  >3C               <
[0516] 003E          GREAT  EQU  >3E               >
[0517] 0041          A      EQU  >41               A
[0518] 0046          F      EQU  >46               F
[0519]               ***********************************************************
[0520]               * PAB offset
[0521] 0001          FLG    EQU  1                 FLAG BYTE ENTRY
[0522] 0002          BUF    EQU  2                 BUFFER ENTRY
[0523] 0004          LEN    EQU  4                 RECORD LENGTH ENTRY
[0524] 0005          CHRCNT EQU  5                 CHARACTER COUNT
[0525] 0006          RNM    EQU  6                 RECORD NUMBER
[0526] 0008          SCR    EQU  8                 SCREEN OFFSET ENTRY
[0527] 0009          NLEN   EQU  9                 NAME LENGTH
[0528] 000A          PABLEN EQU  10                ACTUAL PAB LENGTH
[0529]               ***********************************************************
[0530]               *    BASIC TOKEN TABLE
[0531]               *      EQU  >80               spare token
[0532] 0081          ELSEZ  EQU  >81               ELSE
[0533] 0082          SSEPZ  EQU  >82               ::
[0534] 0083          TREMZ  EQU  >83               $
[0535] 0084          IFZ    EQU  >84               IF
[0536] 0085          GOZ    EQU  >85               GO
[0537] 0086          GOTOZ  EQU  >86               GOTO
[0538] 0087          GOSUBZ EQU  >87               GOSUB
[0539] 0088          RETURZ EQU  >88               RETURN
[0540] 0089          DEFZ   EQU  >89               DEF
[0541] 008A          DIMZ   EQU  >8A               DIM
[0542] 008B          ENDZ   EQU  >8B               END
[0543] 008C          FORZ   EQU  >8C               FOR
[0544] 008D          LETZ   EQU  >8D               LET
[0545] 008E          BREAKZ EQU  >8E               BREAK
[0546] 008F          UNBREZ EQU  >8F               UNBREAK
[0547] 0090          TRACEZ EQU  >90               TRACE
[0548] 0091          UNTRAZ EQU  >91               UNTRACE
[0549] 0092          INPUTZ EQU  >92               INPUT
[0550] 0093          DATAZ  EQU  >93               DATA
[0551] 0094          RESTOZ EQU  >94               RESTORE
[0552] 0095          RANDOZ EQU  >95               RANDOMIZE
[0553] 0096          NEXTZ  EQU  >96               NEXT
[0554] 0097          READZ  EQU  >97               READ
[0555] 0098          STOPZ  EQU  >98               STOP
[0556] 0099          DELETZ EQU  >99               DELETE
[0557] 009A          REMZ   EQU  >9A               REM
[0558] 009B          ONZ    EQU  >9B               ON
[0559] 009C          PRINTZ EQU  >9C               PRINT
[0560] 009D          CALLZ  EQU  >9D               CALL
[0561] 009E          OPTIOZ EQU  >9E               OPTION
[0562] 009F          OPENZ  EQU  >9F               OPEN
[0563] 00A0          CLOSEZ EQU  >A0               CLOSE
[0564] 00A1          SUBZ   EQU  >A1               SUB
[0565] 00A2          DISPLZ EQU  >A2               DISPLAY
[0566] 00A3          IMAGEZ EQU  >A3               IMAGE
[0567] 00A4          ACCEPZ EQU  >A4               ACCEPT
[0568] 00A5          ERRORZ EQU  >A5               ERROR
[0569] 00A6          WARNZ  EQU  >A6               WARNING
[0570] 00A7          SUBXTZ EQU  >A7               SUBEXIT
[0571] 00A8          SUBNDZ EQU  >A8               SUBEND
[0572] 00A9          RUNZ   EQU  >A9               RUN
[0573] 00AA          LINPUZ EQU  >AA               LINPUT
[0574]               *      EQU  >AB               spare token (LIBRARY)
[0575]               *      EQU  >AC               spare token (REAL)
[0576]               *      EQU  >AD               spare token (INTEGER)
[0577]               *      EQU  >AE               spare token (SCRATCH)

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0010 
EQUATES ALCS-359
[0578]               *      EQU  >AF               spare token
[0579] 00B0          THENZ  EQU  >B0               THEN
[0580] 00B1          TOZ    EQU  >B1               TO
[0581] 00B2          STEPZ  EQU  >B2               STEP
[0582] 00B3          COMMAZ EQU  >B3               ,
[0583] 00B4          SEMICZ EQU  >B4               ;
[0584] 00B5          COLONZ EQU  >B5               :
[0585] 00B6          RPARZ  EQU  >B6               )
[0586] 00B7          LPARZ  EQU  >B7               (
[0587] 00B8          CONCZ  EQU  >B8               &          (CONCATENATE)
[0588]               *      EQU  >B9               spare token
[0589] 00BA          ORZ    EQU  >BA               OR
[0590] 00BB          ANDZ   EQU  >BB               AND
[0591] 00BC          XORZ   EQU  >BC               XOR
[0592] 00BD          NOTZ   EQU  >BD               NOT
[0593] 00BE          EQUALZ EQU  >BE               =
[0594] 00BF          LESSZ  EQU  >BF               <
[0595] 00C0          GREATZ EQU  >C0               >
[0596] 00C1          PLUSZ  EQU  >C1               +
[0597] 00C2          MINUSZ EQU  >C2               -
[0598] 00C3          MULTZ  EQU  >C3               *
[0599] 00C4          DIVIZ  EQU  >C4               /
[0600] 00C5          CIRCUZ EQU  >C5               ^
[0601]               *      EQU  >C6               spare token
[0602] 00C7          STRINZ EQU  >C7               QUOTED STRING
[0603] 00C8          UNQSTZ EQU  >C8               UNQUOTED STRING
[0604] 00C8          NUMZ   EQU  >C8               ALSO NUMERICAL STRING
[0605] 00C8          NUMCOZ EQU  >C8               ALSO UNQUOTED STRING
[0606] 00C9          LNZ    EQU  >C9               LINE NUMBER CONSTANT
[0607] 00CA          EOFZ   EQU  >CA               EOF
[0608] 00CB          ABSZ   EQU  >CB               ABS
[0609] 00CC          ATNZ   EQU  >CC               ATN
[0610] 00CD          COSZ   EQU  >CD               COS
[0611] 00CE          EXPZZ  EQU  >CE               EXP
[0612] 00CF          INTZ   EQU  >CF               INT
[0613] 00D0          LOGZ   EQU  >D0               LOG
[0614] 00D1          SGNZZ  EQU  >D1               SGN
[0615] 00D2          SINZ   EQU  >D2               SIN
[0616] 00D3          SQRZ   EQU  >D3               SQR
[0617] 00D4          TANZ   EQU  >D4               TAN
[0618] 00D5          LENZ   EQU  >D5               LEN
[0619] 00D6          CHRZZ  EQU  >D6               CHR$
[0620] 00D7          RNDZ   EQU  >D7               RND
[0621] 00D8          SEGZZ  EQU  >D8               SEG$
[0622] 00D9          POSZ   EQU  >D9               POS
[0623] 00DA          VALZ   EQU  >DA               VAL
[0624] 00DB          STRZZ  EQU  >DB               STR$
[0625] 00DC          ASCZ   EQU  >DC               ASC
[0626] 00DD          PIZ    EQU  >DD               PI
[0627] 00DE          RECZ   EQU  >DE               REC
[0628] 00DF          MAXZ   EQU  >DF               MAX
[0629] 00E0          MINZ   EQU  >E0               MIN
[0630] 00E1          RPTZZ  EQU  >E1               RPT$
[0631]               * RXB PATCH CODE 
[0632]               *      EQU  >E2               unused
[0633] 00E2          RANZ   EQU  >E2               RAN
[0634]               *      EQU  >E2               unused
[0635]               *      EQU  >E3               unused
[0636]               *      EQU  >E4               unused
[0637]               *      EQU  >E5               unused
[0638]               *      EQU  >E6               unused
[0639]               *      EQU  >E7               unused
[0640] 00E8          NUMERZ EQU  >E8               NUMERIC
[0641] 00E9          DIGITZ EQU  >E9               DIGIT

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0011 
EQUATES ALCS-359
[0642] 00EA          UALPHZ EQU  >EA               UALPHA
[0643] 00EB          SIZEZ  EQU  >EB               SIZE
[0644] 00EC          ALLZ   EQU  >EC               ALL
[0645] 00ED          USINGZ EQU  >ED               USING
[0646] 00EE          BEEPZ  EQU  >EE               BEEP
[0647] 00EF          ERASEZ EQU  >EF               ERASE
[0648] 00F0          ATZ    EQU  >F0               AT
[0649] 00F1          BASEZ  EQU  >F1               BASE
[0650]               *      EQU  >F2               spare token (TEMPORARY)
[0651] 00F3          VARIAZ EQU  >F3               VARIABLE
[0652] 00F4          RELATZ EQU  >F4               RELATIVE
[0653] 00F5          INTERZ EQU  >F5               INTERNAL
[0654] 00F6          SEQUEZ EQU  >F6               SEQUENTIAL
[0655] 00F7          OUTPUZ EQU  >F7               OUTPUT
[0656] 00F8          UPDATZ EQU  >F8               UPDATE
[0657] 00F9          APPENZ EQU  >F9               APPEND
[0658] 00FA          FIXEDZ EQU  >FA               FIXED
[0659] 00FB          PERMAZ EQU  >FB               PERMANENT
[0660] 00FC          TABZ   EQU  >FC               TAB
[0661] 00FD          NUMBEZ EQU  >FD               #
[0662] 00FE          VALIDZ EQU  >FE               VALIDATE
[0663]               *      EQU  >FF               ILLEGAL VALUE
[0664]               ***********************************************************
[0665]               * ASSEMBLY LANGUAGE SUPPORT FOR 99/4
[0666]               *
[0667]               * LOAD, INIT, PEEK, LINK, CHARPAT      JDH  08/21/80
[0668]               ***********************************************************
[0669]               * FORMAT FOR LOAD:
[0670]               *  CALL LOAD open load-directive (comma load-directive)
[0671]               *            close
[0672]               *    load-directive = file-name / address (comma data)
[0673]               *                     (null / file-name)
[0674]               *    file-name      = string-expression
[0675]               *    address        = numeric-expression
[0676]               *    data           = numeric-expression
[0677]               *
[0678]               *  FILE TYPE = FIXED 80, DISPLAY , SEQUENTIAL FILE
[0679]               *
[0680]               * FUNCTION:
[0681]               *  LOADS ASSEMBLY LANGUAGE CODE INTO EXPANSION RAM
[0682]               *  ADDRESSES: >2000 - >>3FFF RELOCATING
[0683]               *  RELOCATABLE CODE INTO AVAILABLE MEMORY, ABSOLUTE CODE
[0684]               *  IS LOADED
[0685]               *  INTO ITS ABSOLUTE ADDRESS, ENTRY POINTS ARE DEFINED BY
[0686]               *  'DEF' STATEMENTS, AND ARE LOADED INTO HIGH END OF ERAM
[0687]               *
[0688]               *  RELOACATABLE OR ABSOLUTE CODE MAY BE STORED ON A FILE
[0689]               *  9900 OBJECT CODE FORMAT.
[0690]               *   VALID TAGS = 0, 5, 6, 7, 9, A, B, C, F,:
[0691]               *         TAGS 1, 2, I, M, ARE IGNORED
[0692]               *  THE SYMT OPTION IS NOT SUPPORTED.
[0693]               *  ABSOLUTE CODE MAY BE LOADED DIRECTLY FROM PROGRAM
[0694]               *  BY SPECIFYING AN ADDRESS INSTEAD OF A FILE NAME,
[0695]               *  FOLLOWED BY THE DATA TO BE LOADED (WHICH IS PUT IN THE
[0696]               *   RANGE 0 to 255
[0697]               *  THE RANGE OF THE ADDRESS OR DATA IS LIMITED TO
[0698]               *   32767 to -32768
[0699]               *  MULTIPLE DIRECT LOADS CAN BE IN THE SAME LOAD COMMAND
[0700]               *  PROVIDED THEY ARE SEPARATED BY EITHER A FILENAME OR A
[0701]               *   NULL STRING.
[0702]               *
[0703]               *  MVUP WAS USED TO TRANSFER DATA FROM CPU RAM TO ERAM
[0704]               *  SINCE IT WAS NOT KNOWN AT FIRST THAT THE MOVE
[0705]               *  INSTRUCTION COULD TRANSFER FROM CPU RAM TO ERAM

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0012 
EQUATES ALCS-359
[0706]               *   (PROVIDED THAT >8300 IS SUBTRACTED FROM THE ADDRESSES)
[0707]               ***********************************************************
[0708]               ******************* LINKAGE AND HEADER ********************
[0709] C000 AA              BYTE >AA
[0710] C001 0C,00,00        BYTE 12,0,0
[0711] C004 00,00,00        BYTE 0,0,0,0,0,0
       C007 00,00,00
[0712] C00A 00,00           DATA 0
[0713] C00C 00,00,00        BYTE 0,0,0,0
       C00F 00
[0714] C010 C0,19    LINK1  DATA LINK2
[0715] C012 04,4C,49        STRI 'LINK'
       C015 4E,4B
[0716] C017 C3,25           DATA LINKIT
[0717] C019 C0,22    LINK2  DATA LINK3
[0718] C01B 04,4C,4F        STRI 'LOAD'
       C01E 41,44
[0719] C020 C0,40           DATA LOAD
[0720] C022 C0,2B    LINK3  DATA LINK4
[0721] C024 04,49,4E        STRI 'INIT'
       C027 49,54
[0722] C029 C2,BA           DATA INIT
[0723]               * GKXB new entry point for PEEK
[0724] C02B C0,34    LINK4  DATA LINK5
[0725] C02D 04,50,45        STRI 'PEEK'
       C030 45,4B
[0726] C032 C6,3D           DATA GKPEEK
[0727]               * GKXB new subprograms
[0728] C034 C5,F0    LINK5  DATA QTON
[0729] C036 07,43,48        STRI 'CHARPAT'
       C039 41,52,50
       C03C 41,54
[0730] C03E C4,34           DATA GETCHR
[0731]               * LOAD - LDP1 - LDP4 - LDP5
[0732]               ** CHKSUM is also used as a flag to test if a file has been
[0733]               ** opened (so that it gets closed)
[0734]               ** it is initialized to >0001 and will be changed to some
[0735]               ** other value if a file is used
[0736] C040 BF,02,00 LOAD   DST  >0001,@CHKSUM     {INITIALIZE FILE FLAG}
       C043 01
[0737]               * GKXB Change load routine. Delete check for INIT
[0738]               *      add to clear flag bits.
[0739] C044 06,C6,14        CALL GKLOAD
[0740] C047 D6,42,B7 GC047  CEQ  LPARZ,@CHAT       SYNTAX ERROR if no "("
[0741] C04A 45,30           BR   ERRSY1
[0742] C04C 0F,79           XML  PGMCHR            Skip over
[0743]               * MAIN PARESE LOOP *
[0744]               * Check for file-name or address
[0745] C04E 0F,74    LDP1   XML  PARSE
[0746] C050 B6              BYTE RPARZ           * PARSE up to ")" or ","
[0747] C051 D6,4C,65        CEQ  STRING,@FAC2      Process file name
[0748] C054 60,90           BS   LDP2
[0749]               * Otherwise it is an address
[0750]               * Convert address to integer, save in @PC
[0751] C056 0F,12           XML  CFI               Convert FAC to integer
[0752] C058 D6,54,03        CEQ  3,@FAC10          Check for overflow
[0753] C05B 65,29           BS   ERRN01
[0754] C05D BD,04,4A        DST  @FAC,@PC          Save in ERAM location pointer
[0755]               * Check for "," if there then data should folow
[0756]               *  else end of load statement, goto LDP5
[0757] C060 D6,42,B3 LDP4   CEQ  COMMAZ,@CHAT
[0758] C063 40,88           BR   LDP5
[0759]               * DATA follows or a STRING if no more data
[0760] C065 0F,79           XML  PGMCHR            Skip ","

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0013 
EQUATES ALCS-359
[0761] C067 0F,74           XML  PARSE             Get data value or string if
[0762]               *                              end of data
[0763] C069 B6              BYTE RPARZ           * Parse up to ")" or ","
[0764] C06A D6,4C,65        CEQ  STRING,@FAC2      No more data
[0765] C06D 60,90           BS   LDP2
[0766]               * FAC contains a numeric
[0767] C06F 0F,12           XML  CFI               FAC to INTEGER
[0768] C071 D6,54,03        CEQ  3,@FAC10          Check for overflow
[0769] C074 65,29           BS   ERRN01
[0770]               * GKXB Code for CPU write moved to LOADDT. Add code to
[0771]               *      check VDP or GRAM bits and write to VDP.
[0772] C076 DA,80,C2        CLOG >08,@GKFLAG       Check VDP bit
       C079 08
[0773] C07A 66,8A           BS   LDGRAM            No, check GRAM bit
[0774] C07C BC,B0,04        ST   @FAC1,V*PC        Yes, write to VDP
       C07F 4B
[0775] C080 91,04           DINC @PC               Point to next byte
[0776] C082 05,C0,60        B    LDP4              Continue with LOAD routine
[0777]               * RXB PATCH FILL EMPTY SPACE *****************************
[0778] C085 05,C0,60        B    LDP4
[0779]               * GROM ADDRESS >C088 FOR LDP5
[0780]               * Check for ")"  IF there return ELSE SYNTAX ERROR
[0781] C088 D6,42,B6 LDP5   CEQ  RPARZ,@CHAT       Return
[0782] C08B 61,E1           BS   LDRET
[0783] C08D 05,C5,30        B    ERRSY1            SYNTAX ERROR
[0784]               * LDP2
[0785]               * Process file name
[0786] C090 8E,51    LDP2   CZ   @FAC7             Check for null string
[0787] C092 61,D2           BS   LDNE2
[0788]               * GKXB Change 'LOAD FILE' to check for INIT
[0789] C094 06,C6,2D        CALL GKINIT
[0790]               *************** LOAD DATA INTO ERAM ***********************
[0791]               * LOAD FRESTA, FREEND from ERAM
[0792] C097 BF,16,20        DST  FSLOC,@VARB           Source
       C09A 02
[0793] C09B BF,00,83        DST  FRESTA,@VAR0          Destination
       C09E 08
[0794] C09F BF,5C,00        DST  4,@ARG                # of bytes to move
       C0A2 04
[0795] C0A3 0F,89           XML  MVUP                  Load
[0796]               * Initialize PC, OFFSET in case of no "0" tag
[0797] C0A5 BD,04,08        DST  @FRESTA,@PC
[0798] C0A8 BD,06,08        DST  @FRESTA,@OFFADD   Base address for load module
[0799]               * Read in one record, evaluate the TAG field
[0800]               * LDRD - LDTG
[0801] C0AB BF,02,00 LDRD   DST  0,@CHKSUM         Clear check sum
       C0AE 00
[0802] C0AF 06,C2,63        CALL READIT            Rear in a record
[0803] C0B2 35,00,05 LDTG   MOVE 5,V*BUFPNT,@TAG   Get TAG & field
       C0B5 10,B0,0E
[0804] C0B8 06,C2,00        CALL LDIPCS            Add 5 to BUFPNT, add ASCII
[0805] C0BB 05              BYTE 5               * Value of chars. Read to check
[0806]               * Convert @FIELD to numeric (from ASCII hex value)
[0807]               * Store result: HIGH BYTE to FIELD, LOW BYTE to FIELD+1
[0808]               * Convert HIGH BYTE first: @FIELD & @FIELD+1
[0809]               * Store result in field
[0810] C0BC A6,11,30        SUB  >30,@FIELD        >30 = "0"
[0811] C0BF CE,11,09        CGT  9,@FIELD          Subtract ASCII difference
[0812]               *                              between "9" and "A"
[0813] C0C2 40,C7           BR   GC0C7
[0814] C0C4 A6,11,07        SUB  7,@FIELD
[0815] C0C7 E2,11,04 GC0C7  SLL  4,@FIELD          FIELD=FILED*32
[0816] C0CA A6,12,30        SUB  >30,@FIELD+1
[0817] C0CD CE,12,09        CGT  9,@FIELD+1

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0014 
EQUATES ALCS-359
[0818] C0D0 40,D5           BR   GC0D5
[0819] C0D2 A6,12,07        SUB  7,@FIELD+1
[0820] C0D5 A0,11,12 GC0D5  ADD  @FIELD+1,@FIELD   Add to HIGH BYTE
[0821]               * Now convert LOW BYTE: @FIELD+2 & @FIELD+3
[0822]               * Store result in LOW BYTE of FIELD to FIELD+1
[0823] C0D8 A6,13,30        SUB  >30,@FIELD+2
[0824] C0DB CE,13,09        CGT  9,@FIELD+2
[0825] C0DE 40,E3           BR   GC0E3
[0826] C0E0 A6,13,07        SUB  7,@FIELD+2
[0827] C0E3 BC,12,13 GC0E3  ST   @FIELD+2,@FIELD+1 Store in LOW byte of result
[0828] C0E6 E2,12,04        SLL  4,@FIELD+1        FIELD+1 = FIELD+1*32
[0829] C0E9 A6,14,30        SUB  >30,@FIELD+3
[0830] C0EC CE,14,09        CGT  9,@FIELD+3
[0831] C0EF 40,F4           BR   GC0F4
[0832] C0F1 A6,14,07        SUB  7,@FIELD+3
[0833] C0F4 A0,12,14 GC0F4  ADD  @FIELD+3,@FIELD+1 Add to low byte
[0834]               * Branch to evaluation procedure for TAG
[0835] C0F7 A6,10,30        SUB  >30,@TAG          >30 = "0"
[0836] C0FA D2,10,00        CGE  0,@TAG            If TAG < "0" ILLEGAL CHAR
[0837] C0FD 45,C5           BR   ERRUC1
[0838] C0FF CE,10,0A        CGT  >0A,@TAG          TAGS "0" to ":"
[0839] C102 61,1C           BS   GC11C
[0840] C104 8A,10           CASE @TAG
[0841] C106 41,48           BR   TAG0              "0" RELOCATABLE LENGTH
[0842] C108 40,B2           BR   LDTG              IGNORE "1" TAG
[0843] C10A 40,B2           BR   LDTG              IGNORE "2" TAG
[0844] C10C 45,C5           BR   ERRUC1            No external REF "3"
[0845] C10E 45,C5           BR   ERRUC1            No external REF "4"
[0846] C110 41,5D           BR   TAG5              "5" relocatable entry DEF
[0847] C112 41,60           BR   TAG6              "6" Absolute entry    DEF
[0848] C114 41,92           BR   TAG7              "7" check sum
[0849] C116 40,B2           BR   LDTG              "8" ignore check sum
[0850] C118 41,9F           BR   TAG9              "9" Absolute LOAD address
[0851] C11A 41,BA           BR   LDDNE             ":" end of file
[0852] C11C A6,10,11 GC11C  SUB  >11,@TAG          Subtract offset so
[0853]               *                              that "A" is =0
[0854] C11F D2,10,00        CGE  0,@TAG            ";" to "@" illegal char
[0855] C122 45,C5           BR   ERRUC1
[0856]               * Skip over "I" tag - 8 char, program ID that follows
[0857] C124 D6,10,08        CEQ  8,@TAG
[0858] C127 61,56           BS   LDTG2
[0859]               * Skip over "M" TAG -10 char, program ID that follows
[0860] C129 D6,10,0C        CEQ  12,@TAG
[0861] C12C 41,35           BR   LDTG3
[0862] C12E 06,C2,00        CALL LDIPCS
[0863] C131 0A              BYTE 10
[0864] C132 05,C0,B2        B    LDTG
[0865] C135 CE,10,05 LDTG3  CGT  5,@TAG            TAGS "G" are legal
[0866] C138 65,C5           BS   ERRUC1
[0867] C13A 8A,10           CASE @TAG
[0868] C13C 41,9C           BR   TAGA              "A" RELOCATABLE PROGRAM ADDRE
[0869] C13E 41,A8           BR   TAGB              "B" ABSOLUTE VALUE
[0870] C140 41,A5           BR   TAGC              "C" RELATIVE ADDRESS
[0871] C142 45,C5           BR   ERRUC1            "D" ERROR
[0872] C144 45,C5           BR   ERRUC1            "E" ERROR - UNDEFINED
[0873] C146 40,AB           BR   LDRD              "F" END OF RECORD
[0874]               * TAG0 to TAGB
[0875]               * EVALUATE TAG FIELDS
[0876] C148 BD,06,08 TAG0   DST  @FRESTA,@OFFADD   NEW BASE ADDRESS
[0877] C14B BD,04,08        DST  @FRESTA,@PC       NEW PC
[0878] C14E A1,08,11        DADD @FIELD,@FRESTA    ADD LENGTH TO FIND END OF
[0879]               *                              RELOCATABLE PROGRAM WHICH IS
[0880]               *                              START OF NEXT PROGRAM
[0881]               * Make sure we won't run into routine name table now, so we

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0015 
EQUATES ALCS-359
[0882]               *  don't have to check every time we load a value into ERAM
[0883]               *  routine table must make sure it doesn't run into
[0884]               *  relocatable assembly language code through.
[0885] C151 C9,08,0A        DCHE @FREEND,@FRESTA   OUT OF MEMORY
[0886] C154 65,53           BS   ERRMF1
[0887]               * SKIP OVER PROGRAM ID - 8 BYTES
[0888] C156 06,C2,00 LDTG2  CALL LDIPCS
[0889] C159 08              BYTE 8               * INC BUFPNT, COMPUTE CHECKSUM
[0890] C15A 05,C0,B2        B    LDTG
[0891] C15D A1,11,06 TAG5   DADD @OFFADD,@FIELD    Add starting offset
[0892]               * TAG6 is an absolute address so do not need to add offset
[0893] C160 35,00,06 TAG6   MOVE 6,V*BUFPNT,@INDEX    Get symbol name
       C163 5E,B0,0E
[0894] C166 06,C2,00        CALL LDIPCS            INC BUPNT, COMPUT CHECKSUM
[0895] C169 06              BYTE 6              *  We read 6 chars
[0896]               * Add symbol and its address - stopped in field - to the
[0897]               *  routine entry table. It is put at the end of the table
[0898]               *  (the end of the table is towards the low end of memory)
[0899]               *  Since the table is searched from the end first, if there
[0900]               *  are any duplicate labels the last one entered will have
[0901]               *  precedence over the early one(s).
[0902] C16A 97,0A           DDECT @FREEND          Set to address field
[0903]               * Load address (stored in field in CPU RAM) into routine
[0904]               *  Name table which is in expansion RAM
[0905] C16C BF,16,83        DST  FIELD,@VARB        Source
       C16F 11
[0906] C170 BD,00,0A        DST  @FREEND,@VAR0      Destination
[0907] C173 BF,5C,00        DST  2,@ARG             # bytes to move
       C176 02
[0908] C177 0F,89           XML  MVUP              CPUR RAM to ERAM
[0909]               * Load symbol into routine name table
[0910] C179 A7,0A,00        DSUB 6,@FREEND         Set to symbol field
       C17C 06
[0911] C17D BF,16,83        DST  INDEX,@VARB         Source
       C180 5E
[0912] C181 BD,00,0A        DST  @FREEND,@VAR0       Destination
[0913] C184 BF,5C,00        DST  6,@ARG              Move 6 bytes
       C187 06
[0914] C188 0F,89           XML  MVUP              CPU RAM to ERAM
[0915]               * Check to see if we've run into assembly language code
[0916] C18A C9,08,0A        DCHE @FREEND,@FRESTA   Out of memory
[0917] C18D 65,53           BS   ERRMF1
[0918] C18F 05,C0,B2        B    LDTG              If not then continue
[0919]               ***********************************************************
[0920]               * ROUTINE NAME TABLE ENTRY
[0921]               *
[0922]               *                     0   1   2   3   4   5   6  7
[0923]               *                   -----------------------------------
[0924]               *        FREEND     | S | Y | M | B | O | L | ADDRESS |
[0925]               *    (AFTER ENTRY)  -----------------------------------
[0926]               *        FREEND     |   |   |   |   |   |   |         |
[0927]               *    (BEFORE ENTRY) -----------------------------------
[0928]               *
[0929]               *  FREEND is initialized to >4000 by INIT, address is at
[0930]               *   a higher memory location then symbol
[0931]               ***********************************************************
[0932] C192 83,11    TAG7   DNEG @FIELD            Checksum is 1's compelement
[0933] C194 D5,02,11        DCEQ @FIELD,@CHKSUM    Check sum error
[0934] C197 45,AE           BR   ERRDE1
[0935] C199 05,C0,B2        B    LDTG
[0936] C19C A1,11,06 TAGA   DADD @OFFADD,@FIELD    PC = OFFADD ^ FIELD
[0937]               * TAG 9 is an absolute address so no need to add offset
[0938] C19F BD,04,11 TAG9   DST  @FIELD,@PC
[0939] C1A2 05,C0,B2        B    LDTG

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0016 
EQUATES ALCS-359
[0940] C1A5 A1,11,06 TAGC   DADD @OFFADD,@FIELD
[0941]               * TAG B is an absolute entry so no need to add offset
[0942]               * Relocatable code is checked to see if it will run into
[0943]               *  is no need to check now. Absolute code can go anywhere.
[0944]               *
[0945]               * Load field into expansion RAM using MVUP routine
[0946] C1A8 BD,00,04 TAGB   DST  @PC,@VAR0           Destination
[0947] C1AB BF,16,83        DST  FIELD,@VARB         Source
       C1AE 11
[0948] C1AF BF,5C,00        DST  2,@ARG              Move 2 bytes
       C1B2 02
[0949] C1B3 0F,89           XML  MVUP              CPU RAM to ERAM
[0950] C1B5 95,04           DINCT @PC              We loaded 2 bytes
[0951] C1B7 05,C0,B2        B    LDTG
[0952]               ********* END OF LOAD FOR CURRENT FILE ********************
[0953]               *
[0954]               * FRESTA & FREEND are stored in CPU RAM (>8308)
[0955]               * While loading a file into expansion RAM.
[0956]               * So if the values of FRESTA or FREEND are to be changed
[0957]               * then word locations >8308 and >830A must be changed and
[0958]               * not expansion RAM.
[0959]               *
[0960]               * LDDNE - LDNE2
[0961]               *
[0962]               *   DONE WITH LOAD
[0963]               * Put FRESTA, FREEND back into expansion RAM
[0964]               * If FRESTA is odd then make it even
[0965]               *  so that the next program starts on an even boundry
[0966] C1BA DA,09,01 LDDNE  CLOG 1,@FRESTA+1       Low byte odd?
[0967] C1BD 61,C1           BS   GC1C1
[0968] C1BF 91,08           DINC @FRESTA           Force to next even boundry
[0969] C1C1 BF,16,83 GC1C1  DST  FRESTA,@VARB          Source
       C1C4 08
[0970] C1C5 BF,00,20        DST  FSLOC,@VAR0           Destination
       C1C8 02
[0971] C1C9 BF,5C,00        DST  4,@ARG                Load 4 bytes
       C1CC 04
[0972] C1CD 0F,89           XML  MVUP              CPU RAM to ERAM
[0973] C1CF 06,C2,77        CALL CLSIT             Close file
[0974]               * Check for end of load command ")"
[0975] C1D2 D6,42,B6 LDNE2  CEQ  RPARZ,@CHAT       Check for ")"
[0976] C1D5 61,E1           BS   LDRET
[0977] C1D7 D6,42,B3        CEQ  COMMAZ,@CHAT      Syntax error
[0978] C1DA 45,30           BR   ERRSY1
[0979] C1DC 0F,79           XML  PGMCHR            Skip comma
[0980] C1DE 05,C0,4E        B    LDP1              Continue in main loop
[0981]               *************** LDRET - LDRET2 ****************************
[0982]               *
[0983]               * Return to calling routine
[0984] C1E1 0F,79    LDRET  XML  PGMCHR            Skip over
[0985]               * Entry point for INIT
[0986] C1E3 06,6A,78 LDRET2 CALL CHKEND            Check for end of statement
[0987] C1E6 45,30           BR   ERRSY1            If not end then syntax error
[0988] C1E8 06,00,12        CALL RPL               Return to caller
[0989]               ********************** CHKIN ******************************
[0990]               * Check for INIT-FLAG = >AA55
[0991]               * MOVE ERAM(INITF) to CPU *FAC
[0992] C1EB          PAGE   EQU  $
[0993] C1EB BF,00,83 CHKIN  DST  FAC,@VAR0         Destination
       C1EE 4A
[0994] C1EF BF,16,20        DST  INITF,@VARB       Source
       C1F2 06
[0995] C1F3 BF,5C,00        DST  2,@ARG            2 bytes
       C1F6 02

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0017 
EQUATES ALCS-359
[0996] C1F7 0F,89           XML  MVUP              Move it
[0997] C1F9 D7,4A,AA        DCEQ >AA55,@FAC        Syntax error
       C1FC 55
[0998] C1FD 45,33           BR   ERRSYN
[0999]               * No files have been opened so if there is a syntax error
[1000]               *  goto ERRSYN!
[1001] C1FF 00              RTN
[1002]               *********************** FILE ROUTINES *********************
[1003]               ***********************************************************
[1004]               * INCREMENT BUFFER POINTER by value after call statement
[1005]               * ADD VALUES READ TO CHECKSUM unless the first character
[1006]               * is a "7" = >37 , then add only "7" character to checksum
[1007]               * (other value is the checksum)
[1008]               *
[1009]               *************************** LDIPCS ************************
[1010] C200 88,15    LDIPCS FETCH @INDEXC          Index = # of bytes read
[1011] C202 D6,B0,0E        CEQ  >37,V*BUFPNT
       C205 37
[1012] C206 42,13           BR   GC213
[1013] C208 A3,02,00        DADD >0037,@CHKSUM     Add value of "7" to checksum
       C20B 37
[1014] C20C A3,0E,00        DADD 5,@BUFPNT         1 for "7", 4 for checksum
       C20F 05
[1015] C210 05,C2,24        B    GC224
[1016] C213 BC,4B,B0 GC213  ST   V*BUFPNT,@FAC1    Convert to 2 byte value
       C216 0E
[1017] C217 86,4A           CLR  @FAC              -----------------------------
[1018] C219 A1,02,4A        DADD @FAC,@CHKSUM      Add char to checksum
[1019] C21C 91,0E           DINC @BUFPNT
[1020] C21E 92,15           DEC  @INDEXC           Do it index # of times
[1021] C220 8E,15           CZ   @INDEXC
[1022] C222 42,13           BR   GC213
[1023] C224 00       GC224  RTN
[1024]               ********************** OPENIT *****************************
[1025] C225 BD,0C,50 OPENIT DST  @FAC6,@BYTES      Store actual spec length
[1026] C228 A3,0C,00        DADD PABLEN+80,@BYTES  Add in the PAB length and
       C22B 5A
[1027]               *                              buffer length
[1028] C22C 0F,77           XML  VPUSH             Push possible temp string
[1029] C22E 0F,71           XML  GETSTR             and try to allocate space
[1030] C230 0F,78           XML  VPOP              Restore original string data
[1031]               *
[1032]               * THE FOLLOWING VARIABLES CONTAIN IMPORTANT INFO
[1033]               *
[1034]               *   FAC4, FAC5    Start address of original device specific
[1035]               *   FAC6, FAC7    Length of original device specifications
[1036]               *   SREF          Location of PAB in VDP memory
[1037]               *   BYTES         Length of entire PAB including specificat
[1038] C232 34,50,E0        MOVE @FAC6,V*FAC4,V@PABLEN(@SREF)
       C235 0A,1C,B0
       C238 4E
[1039] C239 86,B0,1C        CLR  V*SREF               Clear the entire PAB
[1040] C23C 35,00,09        MOVE PABLEN-1,V*SREF,V@1(@SREF)
       C23F E0,01,1C
       C242 B0,1C
[1041] C244 BC,E0,09        ST   @FAC7,V@NLEN(@SREF)  Copy specifications length
       C247 1C,51
[1042] C249 BE,E0,08        ST   >60,V@SCR(@SREF)     Screen offset
       C24C 1C,60
[1043] C24E BE,E0,01        ST   4,V@FLG(@SREF)       Dis, fix, seq, input
       C251 1C,04
[1044] C253 A1,50,1C        DADD @SREF,@FAC6          Calculate the address of
[1045] C256 A3,50,00        DADD PABLEN,@FAC6          the buffer
       C259 0A

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0018 
EQUATES ALCS-359
[1046] C25A BD,E0,02        DST  @FAC6,V@BUF(@SREF) Store buffer address in PAB
       C25D 1C,50
[1047] C25F 06,C2,7B        CALL DSRCAL
[1048] C262 00              RTN
[1049]               ***********************************************************
[1050] C263 BD,0E,E0 READIT DST  V@BUF(@SREF),@BUFPNT   INIT buffer pointer
       C266 02,1C
[1051] C268 BE,B0,1C        ST   2,V*SREF
       C26B 02
[1052] C26C BC,E0,05        ST   V@LEN(@SREF),V@CHRCNT(@SREF)
       C26F 1C,E0,04
       C272 1C
[1053] C273 06,C2,7B        CALL DSRCAL
[1054] C276 00              RTN
[1055]               ************************* CLSIT ***************************
[1056] C277 BE,B0,1C CLSIT  ST   1,V*SREF          Prepare to close
       C27A 01
[1057]               ******************** DSRCAL - DSKERR **********************
[1058] C27B BD,56,1C DSRCAL DST  @SREF,@FAC12      Compute start address of spec
[1059] C27E A3,56,00        DADD NLEN,@FAC12       Ready to call DSR routine
       C281 09
[1060] C282 06,00,10        CALL DSR               Call DSR thourgh program link
[1061] C285 08              BYTE 8               * Type = DSR (8)
[1062] C286 62,90           BS   DSKERR            Couldn't find the DSR
[1063] C288 DA,E0,01        CLOG >E0,V@FLG(@SREF)  Set condition bit if no error
       C28B 1C,E0
[1064] C28D 42,90           BR   DSKERR
[1065] C28F 00              RTN
[1066] C290 BD,04,40 DSKERR DST  @FREPTR,@PABPTR   Set up dummy PAB
[1067] C293 A7,04,00        DSUB 6,@PABPTR         Make it standard size
       C296 06
[1068] C297 BD,E0,04        DST  V*SREF,V@4(@PABPTR) Store error code
       C29A 04,B0,1C
[1069] C29D 06,C2,A4        CALL CLSNOE              Close File
[1070] C2A0 06,6A,84        CALL ERRZZ               Issue I/O error
[1071] C2A3 24              BYTE 36              *
[1072]               ********************** CLSNOE *****************************
[1073]               * Try to close the current file
[1074]               * Ignore any errors from the closing of the file.
[1075]               * Since the PAB is not in the normal PAB list
[1076]               *  then we have to close the file in the load routine.
[1077]               * ERRZZ will close the rest of the files.
[1078]               *
[1079]               ** CLOSE IT ONLY IF IT HAS BEEN OPENED
[1080] C2A4 D7,02,00 CLSNOE DCEQ 1,@CHKSUM         Check file flag
       C2A7 01
[1081] C2A8 62,B9           BS   GC2B9
[1082] C2AA BE,B0,1C        ST   1,V*SREF          Store close file code
       C2AD 01
[1083] C2AE BD,56,1C        DST  @SREF,@FAC12      Compute start address of spec
[1084] C2B1 A3,56,00        DADD NLEN,@FAC12       Ready to CALL DSR
       C2B4 09
[1085] C2B5 06,00,10        CALL DSR               CALL DSR through program link
[1086] C2B8 08              BYTE 8               * "8" is type of DSR
[1087] C2B9 00       GC2B9  RTN
[1088]               ***********************************************************
[1089]               * INIT                        JDH   9/02/80
[1090]               ***********************************************************
[1091]               * Check if expansion RAM present
[1092]               * Load support into expansion RAM from GROM
[1093] C2BA 8E,80,84 INIT   CZ   @RAMTOP           If no ERAM, SYNTAX ERROR
[1094] C2BD 65,33           BS   ERRSYN
[1095]               ** Load Assembly header, support routines **
[1096]               * GKXB Correct INIT routine.

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0019 
EQUATES ALCS-359
[1097] C2BF 31,04,EA        MOVE >04EA,G@ALCEND,@>2000
       C2C2 8F,9D,00
       C2C5 98,00
[1098] C2C7 05,C1,E3        B    LDRET2
[1099]               ***********************************************************
[1100]               ***********************************************************
[1101]               * PEEK INSTRUCTION            JDH   9/04/80
[1102]               ***********************************************************
[1103]               *
[1104]               * FORMAT:
[1105]               *  CALL PEEK open address (comma numeric-variable) * close
[1106]               * FUNCTION:
[1107]               *  RETURNS THE VALUE AT address IN ERAM INTO numeric-variab
[1108]               *  IF MORE THAN ONE numeric-variable IS SPECIFIED THEN
[1109]               *  address IS INCREMENTED AND THE VALUE IN ERAM AT THE NEW
[1110]               *  address IS ASSIGNED TO THE NEXT VARIABLE AND SO ON.
[1111]               *
[1112] C2CA D6,42,B7 PEEK   CEQ  LPARZ,@CHAT       Chat = "("
[1113] C2CD 45,33           BR   ERRSYN
[1114] C2CF 0F,79           XML  PGMCHR            Skip "("
[1115] C2D1 0F,74           XML  PARSE             Get value of address
[1116] C2D3 B6              BYTE RPARZ
[1117] C2D4 D6,4C,65        CEQ  STRING,@FAC2      Address MUST BE NUMERIC
[1118] C2D7 65,43           BS   ERRSNM
[1119] C2D9 0F,12           XML  CFI               Convert FAC to integer
[1120] C2DB D6,54,03        CEQ  3,@FAC10          Overflow?
[1121] C2DE 65,2C           BS   ERRNO
[1122] C2E0 BD,04,4A        DST  @FAC,@PC          Save peek address
[1123] C2E3 D6,42,B3        CEQ  COMMAZ,@CHAT      CHAT = "," ?
[1124] C2E6 45,33           BR   ERRSYN
[1125] C2E8 0F,79    PEEK2  XML  PGMCHR            Skip ","
[1126]               * The following check has been put in SYM, 5/26/81
[1127]               * If @CHAT >= >80 then ERRSYN (Don't allow token)
[1128] C2EA 0F,7A           XML  SYM               Get symbol name
[1129] C2EC 0F,7B           XML  SMB               Get value pointer
[1130] C2EE 0F,77           XML  VPUSH             Save FAC on stack for ASSGNV
[1131] C2F0 8E,4C           CZ   @FAC2             Must be numeric
[1132] C2F2 45,43           BR   ERRSNM
[1133] C2F4 86,4A           CLR  @FAC
[1134] C2F6 35,00,07        MOVE 7,@FAC,@FAC1      Clear FAC
       C2F9 4B,4A
[1135]               ** GET PEEK VALUE FROM ERAM INTO  @FAC1
[1136]               * GKXB Change PEEK routine to read VDP/GRAM. Move CPU read
[1137]               *      code to PEEKDT and add code for bite check and VDP
[1138]               *      read.
[1139] C2FB DA,80,C2        CLOG >08,@GKFLAG       Check VDP bit
       C2FE 08
[1140] C2FF 66,A9           BS   PKGRAM            No, check GROM bit
[1141] C301 BC,4B,B0        ST   V*PC,@FAC1        Yes, read VDP
       C304 04
[1142] C305 05,C3,08        B    GC308
[1143] C308 0F,80    GC308  XML  CIF               Convert FAC to F.P. value
[1144] C30A 0F,7C           XML  ASSGNV            Assign to numeric-variable
[1145] C30C D6,42,B3        CEQ  COMMAZ,@CHAT
[1146] C30F 43,16           BR   PEEK5
[1147] C311 91,04           DINC @PC               INC pointer to next ERAM addr
[1148] C313 05,C2,E8        B    PEEK2
[1149]               * CHECK FOR ")" AND END OF STATEMENT
[1150]               * IF ALL OK, THEN RETURN TO CALLER
[1151]               * GETCHR ALSO RETURNS TO HERE
[1152] C316 D6,42,B6 PEEK5  CEQ  RPARZ,@CHAT
[1153] C319 45,33           BR   ERRSYN
[1154] C31B 0F,79           XML  PGMCHR            Skip "("
[1155] C31D 06,6A,78        CALL CHKEND

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0020 
EQUATES ALCS-359
[1156] C320 45,33           BR   ERRSYN
[1157] C322 06,00,12        CALL RPL               RETURN TO CALLER
[1158]               ***********************************************************
[1159]               * LINK INSTRUCTION : SE Sep 1980
[1160]               ***********************************************************
[1161]               *  FORMAT:
[1162]               *  CALL LINK("file-name",parameter1,parameter2,...)
[1163]               *
[1164]               *  LINK ROUTINE READS THE FILE NAME SPECIFIED BY THE USER A
[1165]               *  SAVE THE ADDRESS OF THE NAME FOR LATER USE. THE FILE WIL
[1166]               *  BE SEARCHED IN UTILITY CODE LATER ON.
[1167]               *
[1168]               *  PARAMETERS ARE PASSED EITHER BY REFERENCE OR BY VALUE.
[1169]               *  NUMERIC OR STRING VARIABLES AND NUMERIC OR STRING ARRAYS
[1170]               *  ARE PASSED BY REFERENCE AND ALL OTHERS INCLUDING A USER
[1171]               *  DEFINED FUNCTION ARE PASSED BY VALUE.
[1172]               *
[1173]               *  PARAMETER INFORMATION IS STORED IN CPU >8300 THROUGH >83
[1174]               *  THAT GIVES A PARAMETER TYPE CODE OF EACH PARAMETER.
[1175]               *        CODE 0 ... Numeric expression
[1176]               *        CODE 1 ... String experession
[1177]               *        CODE 2 ... Numeric variable
[1178]               *        CODE 3 ... String variable
[1179]               *        CODE 4 ... Numeric array
[1180]               *        CODE 5 ... String array
[1181]               *
[1182]               *  IF A PARAMETER IS PASSED AS A NUMERIC EXPRESSION ITSL
[1183]               *  ACTUAL VALUE GETS PUSHED INTO THE VALUE STACK. IN CASE O
[1184]               *  A STRING EXPRESSION , ITS VALUE STACK CONTAINS AN ID(>65
[1185]               *  POINTER TO THE VALUE SPACE AND ITS LENGTH. IF A PARAMETE
[1186]               *  GETS PASSED AS A REFERENCE THE PRODUCT OF XML SYM AND XM
[1187]               *  SMB IN THE @FAC AREA GETS PUSHED INTO STACK.
[1188]               *
[1189]               *  AFTER AN ASSEMBLY LANGUAGE SUBPROGRAM IS EXECUTED LINK
[1190]               *  ROUTINE WILL POP THE STACK TO GET RID OF PARAMETER
[1191]               *  INFORMATION. CONTROL WILL BE TRANSFERED TO THE XB MAIN
[1192]               *  PROGRAM AFTERWARDS.
[1193]               *
[1194]               ***********************************************************
[1195]               * CALL LINK program
[1196]               ***********************************************************
[1197] C325 06,C1,EB LINKIT CALL CHKIN             Check if INIT has been called
[1198] C328 BD,10,6E        DST  @VSPTR,@OLDS      Save VSPTR for later use
[1199] C32B D6,42,B7        CEQ  LPARZ,@CHAT       Check for "("
[1200] C32E 45,33           BR   ERRSYN
[1201] C330 0F,79           XML  PGMCHR            Advance program pointer
[1202] C332 0F,74           XML  PARSE             Get the routine name.
[1203] C334 B6              BYTE RPARZ           * Read up to ")"
[1204] C335 D6,4C,65        CEQ  >65,@FAC2         Should be a string
[1205] C338 45,9A           BR   ERRBA
[1206] C33A 8F,50           DCZ  @FAC6             Don't accept null string
[1207] C33C 65,9A           BS   ERRBA
[1208] C33E C6,51,06        CH   6,@FAC7           Should be less then 6 char
[1209] C341 65,9A           BS   ERRBA
[1210] C343 0F,77           XML  VPUSH             Push to make it semi-permanen
[1211] C345 86,12           CLR  @COUNT            Initialize parameter counter
[1212]               ***********************************************************
[1213]               * PARAMETERS get evaluated here
[1214]               ***********************************************************
[1215] C347 D6,42,B6 PAR01  CEQ  RPARZ,@CHAT       No arg. So execute it
[1216] C34A 64,05           BS   EXE01
[1217] C34C D6,42,B3        CEQ  COMMAZ,@CHAT      Should have a comma
[1218] C34F 45,33           BR   ERRSYN
[1219] C351 BD,22,2C        DST  @PGMPTR,@ERRCOD   Save text pointer

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0021 
EQUATES ALCS-359
[1220] C354 0F,79           XML  PGMCHR            Get the character
[1221] C356 CA,42,80        CHE  >80,@CHAT         Must be an expression
[1222] C359 63,C7           BS   VAL01
[1223]               * If CHAT = LPARZ then pass by expression
[1224] C35B 06,C4,2C        CALL CLRFAC            Clear FAC entry for SYM
[1225] C35E 0F,7A           XML  SYM               Read in the symbol table info
[1226]               * After XML SYM @FAC area contains a pointer to symbo table
[1227]               * Below statement checks if it is a UDF.
[1228] C360 DA,B0,4A        CLOG >40,V*FAC         Pass by value
       C363 40
[1229] C364 43,C7           BR   VAL01
[1230] C366 D6,42,B3        CEQ  COMMAZ,@CHAT      Pass by reference
[1231] C369 63,E5           BS   REF01
[1232] C36B D6,42,B6        CEQ  RPARZ,@CHAT       Pass by reference
[1233] C36E 63,E5           BS   REF01
[1234] C370 D6,42,B7        CEQ  LPARZ,@CHAT       An array
[1235] C373 63,7C           BS   ARRAY
[1236] C375 CA,42,80        CHE  >80,@CHAT         Pass by value
[1237] C378 63,C7           BS   VAL01
[1238] C37A 45,33           BR   ERRSYN
[1239]               ***********************************************************
[1240]               * ARRAY case gets checked here
[1241]               ***********************************************************
[1242]               * Should look like A(,,) etc.
[1243]               * Stack entry for an array will look like
[1244]               * +--------------+-------+---+-------------+---------------
[1245]               * | Pointer to   |  >00  |   | Pointer to  |
[1246]               * | symbol table |   or  |   | dim info in |
[1247]               * | entry        |  >65  |   | real v.s.   |
[1248]               * +- FAC --------+ FAC2 -+---+- FAC4 ------+- FAC6 --------
[1249]               *
[1250] C37C 0F,79    ARRAY  XML  PGMCHR            Get the next character
[1251] C37E D6,42,B6        CEQ  RPARZ,@CHAT       Pass by reference
[1252] C381 63,8F           BS   ARRAY2
[1253] C383 D6,42,B3        CEQ  COMMAZ,@CHAT      More array information
[1254] C386 63,7C           BS   ARRAY
[1255] C388 93,2C           DDEC @PGMPTR           Adjust the pointer
[1256] C38A BE,42,B7        ST   LPARZ,@CHAT
[1257] C38D 43,E5           BR   REF01             Pass by reference
[1258]               * In array cases the symbol table address gets stored at FA
[1259]               * area, and the pointer to the value space (dimension info)
[1260]               * goes into FAC4
[1261] C38F 0F,79    ARRAY2 XML  PGMCHR            Advance the program pointer
[1262] C391 DA,B0,4A        CLOG >80,V*FAC         Test string bit
       C394 80
[1263] C395 43,9D           BR   GC39D
[1264] C397 BE,90,12        ST   4,*COUNT          Numeric array
       C39A 04
[1265] C39B 43,A1           BR   GC3A1
[1266] C39D BE,90,12 GC39D  ST   5,*COUNT          String array case
       C3A0 05
[1267]               * Check if array is being shared. If it is then go back
[1268]               * through the linkage to get the actuals symbol table
[1269]               * pointer. Put the pointer to the value space (dimension in
[1270]               * into FAC4.
[1271] C3A1 DA,B0,4A GC3A1  CLOG >20,V*FAC         Shared array?
       C3A4 20
[1272] C3A5 63,BE           BS   GC3BE
[1273] C3A7 35,00,02        MOVE 2,V@6(@FAC),@FAC4 If so, get pointer
       C3AA 4E,E0,06
       C3AD 4A
[1274] C3AE DA,EF,FF        CLOG >20,V@-6(@FAC4)   Shared also?
       C3B1 FA,4E,20
[1275] C3B4 63,BC           BS   GC3BC

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0022 
EQUATES ALCS-359
[1276] C3B6 35,00,02        MOVE 2,V*FAC4,@FAC4    Array is not shared
       C3B9 4E,B0,4E
[1277] C3BC 43,C5    GC3BC  BR   GC3C5
[1278] C3BE BD,4E,4A GC3BE  DST  @FAC,@FAC4        Array is not shared
[1279] C3C1 A3,4E,00        DADD 6,@FAC4           Point to value space
       C3C4 06
[1280] C3C5 43,FA    GC3C5  BR   PUSH
[1281]               ***********************************************************
[1282]               * VALUE
[1283]               *  Passing the parameter by value
[1284]               ***********************************************************
[1285] C3C7 BD,2C,22 VAL01  DST  @ERRCOD,@PGMPTR   Restore program pointer
[1286] C3CA 0F,79           XML  PGMCHR            Skip the first character
[1287] C3CC BD,16,0C        DST  @BYTES,@TEMP      In case of passing a string
[1288] C3CF 0F,74           XML  PARSE             Parsing up to comma
[1289] C3D1 B6              BYTE RPARZ
[1290] C3D2 BD,0C,16        DST  @TEMP,@BYTES      Restore the value in >0C area
[1291]               * After parsing @FAC area contains its actual numeric value
[1292]               *  in a numeric case, and the following information in a
[1293]               *  string case.
[1294]               * +----------------+-----+--+------------+-----------------
[1295]               * | >001C  or      | >65 |  | Pointer to | Length of string
[1296]               * | value pointer  |     |  | string     | string
[1297]               * | address        |     |  |            |
[1298]               * +- FAC ----------+-FAC2+--+-FAC4 ------+- FAC6 ----------
[1299]               *
[1300] C3D5 CE,4C,63        CGT  >63,@FAC2         If more then 99 then
[1301] C3D8 43,E0           BR   GC3E0
[1302] C3DA BE,90,12        ST   1,*COUNT          Store flag for string express
       C3DD 01
[1303] C3DE 43,E3           BR   GC3E3
[1304] C3E0 86,90,12 GC3E0  CLR  *COUNT            Otherwise it is a numeric exp
[1305] C3E3 43,FA    GC3E3  BR   PUSH              Push into stack
[1306]               ***********************************************************
[1307]               * REFERENCE
[1308]               *   Passing the parameter by reference
[1309]               ***********************************************************
[1310]               * Variables, array element and whole array passing.
[1311]               *
[1312]               * After SMB @FAC entry shold look like;
[1313]               * +--------------+------+-----+-------------+--------------
[1314]               * | Pointer to   | >00  |     | Pointer to  |
[1315]               * | symbol table |      |     | value space |
[1316]               * | entry        |      |     |             |
[1317]               * +-- FAC -------+ FAC2 +-----+- FAC4 ------+- FAC6 -------
[1318]               *  for numeric case, and
[1319]               * +--------------+------+-----+-------------+--------------
[1320]               * | Pointer to   | >65  |     | Pointer to  | String
[1321]               * | value space  |      |     | string      | length
[1322]               * | entry        |      |     |             |
[1323]               * +- FAC --------+ FAC2 +-----+- FAC4 ------+- FAC6 -------
[1324]               * for a string case.
[1325] C3E5 0F,7B    REF01  XML  SMB               Get the location
[1326] C3E7 CA,42,B8        CHE  >B8,@CHAT         Pass array expression
[1327] C3EA 63,C7           BS   VAL01
[1328] C3EC 8E,4C           CZ   @FAC2
[1329] C3EE 43,F6           BR   GC3F6
[1330] C3F0 BE,90,12        ST   2,*COUNT          Must be a numeric variable
       C3F3 02
[1331] C3F4 43,FA           BR   PUSH
[1332] C3F6 BE,90,12 GC3F6  ST   3,*COUNT          Must be a string variable
       C3F9 03
[1333]               ***********************************************************
[1334]               * PUSH routine

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0023 
EQUATES ALCS-359
[1335]               *  Pushes @FAC entry into a value stack.
[1336]               ***********************************************************
[1337] C3FA 90,12    PUSH   INC  @COUNT
[1338] C3FC CE,12,10        CGT  16,@COUNT         Too many parameters
[1339] C3FF 65,9A           BS   ERRBA
[1340] C401 0F,77           XML  VPUSH
[1341] C403 43,47           BR   PAR01             Get the next argument.
[1342]               ***********************************************************
[1343]               * EXECUTE routine
[1344]               *  Restore file name info transfer control over to ALC
[1345]               ***********************************************************
[1346] C405 BE,4A,20 EXE01  ST   >20,@FAC          Store blank in the FAC area.
[1347] C408 35,00,05        MOVE 5,@FAC,@FAC1
       C40B 4B,4A
[1348] C40D 35,00,04        MOVE 4,V@12(@OLDS),@STORE   Get the file name info
       C410 14,E0,0C
       C413 10
[1349] C414 34,16,4A        MOVE @STORE+2,V*STORE,@FAC  Move to FAC
       C417 B0,14
[1350] C419 87,22           DCLR @ERRCOD           Clear program pointer for
[1351]               *                              error code
[1352] C41B 0F,20           XML  ALSUP             Go to CPU at >2000 to execute
[1353] C41D 64,C9           BS   ERROR             Error found
[1354]               *                             If no error, start checking s
[1355]               ***********************************************************
[1356]               * RETURN to the XB main program.
[1357]               ***********************************************************
[1358] C41F C5,6E,10 NOERR  DCH  @OLDS,@VSPTR      Pop the stack
[1359] C422 44,29           BR   GC429
[1360] C424 0F,78           XML  VPOP              Pop the stack
[1361] C426 05,C4,1F        B    NOERR
[1362] C429 05,A0,1C GC429  B    LNKRTN            Check ")" and end of statemen
[1363]               ***********************************************************
[1364]               * SUBROUTINES used in this file.
[1365]               ***********************************************************
[1366] C42C 86,4A    CLRFAC CLR  @FAC
[1367] C42E 35,00,07        MOVE 7,@FAC,@FAC1
       C431 4B,4A
[1368] C433 00              RTN
[1369]               ***********************************************************
[1370]               * CHARPAT ROUTINE             99/4A - JDH 10/01/80
[1371]               ***********************************************************
[1372]               *
[1373]               * FORMAT:
[1374]               *  CALL CHARPAT open (numeric expression, string expression
[1375]               *
[1376]               *  FUNCTION:
[1377]               *   RETURNS THE CHARACTER DEFINITION PATTERN FOR CHARACTER
[1378]               *   NUMBER <numeric expression> INTO <string expression>
[1379]               *
[1380]               ******************* GETCHR - GETCHR2***********************
[1381] C434 D6,42,B7 GETCHR CEQ  LPARZ,@CHAT
[1382] C437 45,33           BR   ERRSYN
[1383] C439 0F,79    GCHR2  XML  PGMCHR
[1384] C43B 0F,74           XML  PARSE
[1385] C43D B6              BYTE RPARZ
[1386] C43E D6,4C,65        CEQ  STRING,@FAC2      Can't be a string
[1387] C441 65,43           BS   ERRSNM
[1388] C443 0F,12           XML  CFI               Convert FAC to integer
[1389] C445 D6,54,03        CEQ  3,@FAC10          Range 32 to 143
[1390] C448 65,9A           BS   ERRBA
[1391] C44A D3,4A,00        DCGE 30,@FAC           30
       C44D 1E
[1392] C44E 45,9A           BR   ERRBA

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0024 
EQUATES ALCS-359
[1393] C450 CF,4A,00        DCGT 159,@FAC          159
       C453 9F
[1394] C454 65,9A           BS   ERRBA
[1395] C456 E3,4A,00        DSLL 3,@FAC            8 bytes / entry so times 8
       C459 03
[1396] C45A BF,10,03        DST  >0300,@TBLPTR     Base of char table less 32*8
       C45D 00
[1397] C45E A1,10,4A        DADD @FAC,@TBLPTR      Add in arg offset
[1398] C461 BF,0C,00        DST  16,@BYTES         16 byte string in string spac
       C464 10
[1399] C465 0F,71           XML  GETSTR
[1400] C467 BD,12,1C        DST  @SREF,@STRPTR     Save pointer to string
[1401] C46A BE,15,08        ST   8,@INDEXC         Loop counter
[1402] C46D BC,B0,12 GC46D  ST   V*TBLPTR,V*STRPTR
       C470 B0,10
[1403] C472 E6,B0,12        SRL  4,V*STRPTR        Get rid of low nibble
       C475 04
[1404] C476 A2,B0,12        ADD  >30,V*STRPTR      Add ASCII "0"
       C479 30
[1405] C47A CE,B0,12        CGT  >39,V*STRPTR      >39 = ASCII "9"
       C47D 39
[1406] C47E 44,84           BR   GCHR3
[1407] C480 A2,B0,12        ADD  7,V*STRPTR        Value "A" to "F"
       C483 07
[1408] C484 91,12    GCHR3  DINC @STRPTR
[1409] C486 BC,B0,12        ST   V*TBLPTR,V*STRPTR
       C489 B0,10
[1410] C48B B2,B0,12        AND  >0F,V*STRPTR
       C48E 0F
[1411] C48F A2,B0,12        ADD  >30,V*STRPTR      Add ASCII "0"
       C492 30
[1412] C493 CE,B0,12        CGT  >39,V*STRPTR
       C496 39
[1413] C497 44,9D           BR   GCHR4
[1414] C499 A2,B0,12        ADD  7,V*STRPTR        Value "A" to "F"
       C49C 07
[1415] C49D 91,10    GCHR4  DINC @TBLPTR
[1416] C49F 91,12           DINC @STRPTR
[1417] C4A1 92,15           DEC  @INDEXC
[1418] C4A3 8E,15           CZ   @INDEXC
[1419] C4A5 44,6D           BR   GC46D
[1420]               * NOW assign the string just created to the string
[1421]               *  variable following
[1422] C4A7 0F,79           XML  PGMCHR            Skip comma
[1423]               * The following check has been put in SYM, 5/26/81
[1424]               * If CHAT >= >80 then ERRSYN (Do not allow token).
[1425] C4A9 0F,7A           XML  SYM           Get symbol table info for next ar
[1426] C4AB 0F,7B           XML  SMB
[1427] C4AD 0F,77           XML  VPUSH         Save on stack for ASSGNV
[1428] C4AF D6,4C,65        CEQ  STRING,@FAC2      Must be a stirng variable
[1429] C4B2 45,43           BR   ERRSNM
[1430] C4B4 BF,4A,00        DST  >001C,@FAC        Temp string so use SREF as ad
       C4B7 1C
[1431] C4B8 BD,4E,1C        DST  @SREF,@FAC4       Pointer to string
[1432] C4BB BF,50,00        DST  16,@FAC6          String length
       C4BE 10
[1433] C4BF 0F,7C           XML  ASSGNV            Assign to string variable
[1434] C4C1 D6,42,B3        CEQ  COMMAZ,@CHAT
[1435] C4C4 64,39           BS   GCHR2
[1436] C4C6 05,C3,16        B    PEEK5
[1437]               ***********************************************************
[1438]               ************** ERROR BRANCH TABLE FOR LINK ****************
[1439]               ***********************************************************
[1440] C4C9 8A,22    ERROR  CASE  @ERRCOD

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0025 
EQUATES ALCS-359
[1441] C4CB 44,1F           BR   NOERR
[1442] C4CD 44,1F           BR   NOERR
[1443] C4CF 45,2C           BR   ERRNO             2 Numeric Overflow
[1444] C4D1 45,33           BR   ERRSYN            3 SYNtax error
[1445] C4D3 45,37           BR   ERRIBS            4 Illegal after subprogram
[1446] C4D5 45,3B           BR   ERRNQS            5 unmatched quotes
[1447] C4D7 45,3F           BR   ERRNTL            6 Name Too Long
[1448] C4D9 45,43           BR   ERRSNM            7 String Number Mismatch
[1449] C4DB 45,47           BR   ERROBE            8 Option Base Error
[1450] C4DD 45,4B           BR   ERRMUV            9 iMproperly Used name
[1451] C4DF 45,4F           BR   ERRIM            10 IMage error
[1452] C4E1 45,56           BR   ERRMEM           11 MEMory full
[1453] C4E3 45,5A           BR   ERRSO            12 Stack Overflow
[1454] C4E5 45,5E           BR   ERRNWF           13 Next Without For
[1455] C4E7 45,62           BR   ERRFNN           14 For Next Nesting
[1456] C4E9 45,66           BR   ERRSNS           15 must be in subprogram
[1457] C4EB 45,6A           BR   ERRRSC           16 Recursive Subprogram Call
[1458] C4ED 45,6E           BR   ERRMS            17 Missing Subend
[1459] C4EF 45,72           BR   ERRRWG           18 Return Without Gosub
[1460] C4F1 45,76           BR   ERRST            19 String Truncated
[1461] C4F3 45,7A           BR   ERRBS            20 Bad Subscript
[1462] C4F5 45,7E           BR   ERRSSL           21 Speech String too Long
[1463] C4F7 45,82           BR   ERRLNF           22 Line Not Found
[1464] C4F9 45,86           BR   ERRBLN           23 Bad Line Number
[1465] C4FB 45,8A           BR   ERRLTL           24 Line Too Long
[1466] C4FD 45,8E           BR   ERRCC            25 Can't Continue
[1467] C4FF 45,92           BR   ERRCIP           26 Command Illegal in Program
[1468] C501 45,96           BR   ERROLP           27 Only Legal in a Program
[1469] C503 45,9A           BR   ERRBA            28 Bad Argument
[1470] C505 45,9E           BR   ERRNPP           29 No Program Present
[1471] C507 45,A2           BR   ERRBV            30 Bad Value
[1472] C509 45,A6           BR   ERRIAL           31 Incorrect Argument List
[1473] C50B 45,AA           BR   ERRINP           32 INPut error
[1474] C50D 45,B1           BR   ERRDAT           33 DATa error
[1475] C50F 45,B5           BR   ERRFE            34 File Error
[1476] C511 44,1F           BR   NOERR
[1477] C513 45,B9           BR   ERRIO            36 I/O error
[1478] C515 45,BD           BR   ERRSNF           37 Subprogram Not Found
[1479] C517 44,1F           BR   NOERR
[1480] C519 45,C1           BR   ERRPV            39 Protected Violation
[1481] C51B 45,C8           BR   ERRIVN           40 unrecognized Character
[1482] C51D 45,CC           BR   WRNNO            41 Numeric Number Overflow
[1483] C51F 45,D2           BR   WRNST            42 String Truncated
[1484] C521 45,D8           BR   WRNNPP           43 No Program Present
[1485] C523 45,DE           BR   WRNINP           44 INPut error
[1486] C525 45,E4           BR   WRNIO            45 I/O error
[1487] C527 45,EA           BR   WRNLNF           46 Line Not Found
[1488]               ***********************************************************
[1489]               **************** ERROR HANDLING SECTION *******************
[1490]               ***********************************************************
[1491] C529 06,C2,A4 ERRN01 CALL CLSNOE            * ENTRY FOR LOAD
[1492] C52C 06,6A,84 ERRNO  CALL ERRZZ             * Numeric Overflow
[1493] C52F 02              BYTE 2
[1494] C530 06,C2,A4 ERRSY1 CALL CLSNOE            * ENTRY FOR LOAD
[1495] C533 06,6A,84 ERRSYN CALL ERRZZ             * SYNtax error
[1496] C536 03              BYTE 3
[1497] C537 06,6A,84 ERRIBS CALL ERRZZ             * Illegal after subprogram
[1498] C53A 04              BYTE 4
[1499] C53B 06,6A,84 ERRNQS CALL ERRZZ             * uNmatched QuoteS
[1500] C53E 05              BYTE 5
[1501] C53F 06,6A,84 ERRNTL CALL ERRZZ             * Name Too Long
[1502] C542 06              BYTE 6
[1503] C543 06,6A,84 ERRSNM CALL ERRZZ             * String Number Mismatch
[1504] C546 07              BYTE 7

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0026 
EQUATES ALCS-359
[1505] C547 06,6A,84 ERROBE CALL ERRZZ             * Option Base Error
[1506] C54A 08              BYTE 8
[1507] C54B 06,6A,84 ERRMUV CALL ERRZZ             * Improperly used name
[1508] C54E 09              BYTE 9
[1509] C54F 06,6A,84 ERRIM  CALL ERRZZ             * Image Error
[1510] C552 0A              BYTE 10
[1511] C553 06,C2,A4 ERRMF1 CALL CLSNOE            * ENTRY FOR LOAD
[1512] C556 06,6A,84 ERRMEM CALL ERRZZ             * MEMory full
[1513] C559 0B              BYTE 11
[1514] C55A 06,6A,84 ERRSO  CALL ERRZZ             * Stack Overflow
[1515] C55D 0C              BYTE 12
[1516] C55E 06,6A,84 ERRNWF CALL ERRZZ             * Next Without For
[1517] C561 0D              BYTE 13
[1518] C562 06,6A,84 ERRFNN CALL ERRZZ             * For-Next Nesting
[1519] C565 0E              BYTE 14
[1520] C566 06,6A,84 ERRSNS CALL ERRZZ             * must be in subprogram
[1521] C569 0F              BYTE 15
[1522] C56A 06,6A,84 ERRRSC CALL ERRZZ             * Recursive Subprogram Call
[1523] C56D 10              BYTE 16
[1524] C56E 06,6A,84 ERRMS  CALL ERRZZ             * Missing Subend
[1525] C571 11              BYTE 17
[1526] C572 06,6A,84 ERRRWG CALL ERRZZ             * Return Without Gosub
[1527] C575 12              BYTE 18
[1528] C576 06,6A,84 ERRST  CALL ERRZZ             * String Truncated
[1529] C579 13              BYTE 19
[1530] C57A 06,6A,84 ERRBS  CALL ERRZZ             * Bad Subscript
[1531] C57D 14              BYTE 20
[1532] C57E 06,6A,84 ERRSSL CALL ERRZZ             * Speech String too Long
[1533] C581 15              BYTE 21
[1534] C582 06,6A,84 ERRLNF CALL ERRZZ             * Line Not Found
[1535] C585 16              BYTE 22
[1536] C586 06,6A,84 ERRBLN CALL ERRZZ             * Bad Line Number
[1537] C589 17              BYTE 23
[1538] C58A 06,6A,84 ERRLTL CALL ERRZZ             * Line Too Long
[1539] C58D 18              BYTE 24
[1540] C58E 06,6A,84 ERRCC  CALL ERRZZ             * Can't Continue
[1541] C591 19              BYTE 25
[1542] C592 06,6A,84 ERRCIP CALL ERRZZ             * Command Illegal in Program
[1543] C595 1A              BYTE 26
[1544] C596 06,6A,84 ERROLP CALL ERRZZ             * Only Legal in a Program
[1545] C599 1B              BYTE 27
[1546] C59A 06,6A,84 ERRBA  CALL ERRZZ             * Bad Argument
[1547] C59D 1C              BYTE 28
[1548] C59E 06,6A,84 ERRNPP CALL ERRZZ             * No Program Present
[1549] C5A1 1D              BYTE 29
[1550] C5A2 06,6A,84 ERRBV  CALL ERRZZ             * Bad Value
[1551] C5A5 1E              BYTE 30
[1552] C5A6 06,6A,84 ERRIAL CALL ERRZZ             * Incorrect Argument List
[1553] C5A9 1F              BYTE 31
[1554] C5AA 06,6A,84 ERRINP CALL ERRZZ             * INPut error
[1555] C5AD 29              BYTE 41
[1556] C5AE 06,C2,A4 ERRDE1 CALL CLSNOE            * ENTRY FOR LOAD
[1557] C5B1 06,6A,84 ERRDAT CALL ERRZZ             * DATa error / Checksum error
[1558] C5B4 21              BYTE 33
[1559] C5B5 06,6A,84 ERRFE  CALL ERRZZ             * File Error
[1560] C5B8 22              BYTE 34
[1561] C5B9 06,6A,84 ERRIO  CALL ERRZZ             * I/O error
[1562] C5BC 24              BYTE 36
[1563] C5BD 06,6A,84 ERRSNF CALL ERRZZ             * Subprogram Not Found
[1564] C5C0 25              BYTE 37
[1565] C5C1 06,6A,84 ERRPV  CALL ERRZZ             * Protection Violation
[1566] C5C4 27              BYTE 39
[1567] C5C5 06,C2,A4 ERRUC1 CALL CLSNOE            * ENTRY FOR LOAD
[1568] C5C8 06,6A,84 ERRIVN CALL ERRZZ             * Unrecognized character / il

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0027 
EQUATES ALCS-359
[1569] C5CB 28              BYTE 40
[1570] C5CC 06,6A,82 WRNNO  CALL WARNZZ            * Numeric Overflow
[1571] C5CF 02              BYTE 2
[1572] C5D0 44,1F           BR   NOERR
[1573] C5D2 06,6A,82 WRNST  CALL WARNZZ            * String Truncated
[1574] C5D5 13              BYTE 19
[1575] C5D6 44,1F           BR   NOERR
[1576] C5D8 06,6A,82 WRNNPP CALL WARNZZ            * No Program Present
[1577] C5DB 1D              BYTE 29
[1578] C5DC 44,1F           BR   NOERR
[1579] C5DE 06,6A,82 WRNINP CALL WARNZZ            * INPut Error
[1580] C5E1 20              BYTE 32
[1581] C5E2 44,1F           BR   NOERR
[1582] C5E4 06,6A,82 WRNIO  CALL WARNZZ            * I/O error
[1583] C5E7 23              BYTE 35
[1584] C5E8 44,1F           BR   NOERR
[1585] C5EA 06,6A,82 WRNLNF CALL WARNZZ            * Line Not Found
[1586] C5ED 26              BYTE 38
[1587] C5EE 44,1F           BR   NOERR
[1588]               ***********************************************************
[1589]               * RXB move INIT code to >9800
[1590]               ***********************************************************
[1591]               *
[1592]               * CALL QUITON routine
[1593]               *
[1594] C5F0 C6,02    QTON   DATA QTOFF
[1595] C5F2 06,51,55        STRI 'QUITON'
       C5F5 49,54,4F
       C5F8 4E
[1596] C5F9 C5,FB           DATA QTON1
[1597] C5FB B2,80,C2 QTON1  AND  >EF,@GKFLAG  Reset QUIT bit
       C5FE EF
[1598] C5FF 05,C1,E3        B    LDRET2       Return
[1599]               *
[1600]               * CALL QUITOFF routine
[1601]               *
[1602] C602 C6,19    QTOFF  DATA POKEV
[1603] C604 07,51,55        STRI 'QUITOFF'
       C607 49,54,4F
       C60A 46,46
[1604] C60C C6,0E           DATA QTOFF1
[1605] C60E B6,80,C2 QTOFF1 OR   >10,@GKFLAG  Set QUIT bit
       C611 10
[1606] C612 41,E3           BR   LDRET2       Return
[1607]               *
[1608]               * Set-up for CALL GKLOAD routine
[1609]               *
[1610] C614 B2,80,C2 GKLOAD AND  >F0,@GKFLAG  Reset flag bits
       C617 F0
[1611] C618 00              RTN               Return
[1612]               *
[1613]               * POKEV routine
[1614]               *
[1615] C619 C6,44    POKEV  DATA PEEKV
[1616] C61B 05,50,4F        STRI 'POKEV'
       C61E 4B,45,56
[1617] C621 C6,23           DATA POV
[1618] C623 06,C6,54 POV    CALL GKSETV       Set VDP bit
[1619] C626 BF,02,00        DST  1,@CHKSUM    For GKLOAD routine
       C629 01
[1620] C62A 05,C0,47        B    GC047        Goto GKLOAD
[1621]               *
[1622]               * Check for CALL GKINIT on 'LOAD FILE'
[1623]               *

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0028 
EQUATES ALCS-359
[1624] C62D 0F,77    GKINIT XML  VPUSH        Save FAC
[1625] C62F 06,C1,EB        CALL CHKIN        Check for GKINIT
[1626] C632 0F,78           XML  VPOP         Restore FAC
[1627] C634 DA,80,C2        CLOG >C,@GKFLAG   Error if POKEG or POKEV
       C637 0C
[1628] C638 45,33           BR   ERRSYN
[1629] C63A 05,C2,25        B    OPENIT       Open the file
[1630]               *
[1631]               * New entry point for CALL PEEK,
[1632]               * clears flag bits.
[1633]               *
[1634] C63D B2,80,C2 GKPEEK AND  >F0,@GKFLAG
       C640 F0
[1635] C641 05,C2,CA        B    PEEK
[1636]               *
[1637]               * PEEKV routine
[1638]               *
[1639] C644 C6,66    PEEKV  DATA PEEKG
[1640] C646 05,50,45        STRI 'PEEKV'
       C649 45,4B,56
[1641] C64C C6,4E           DATA PKV
[1642] C64E 06,C6,54 PKV    CALL GKSETV       Set VDP bit
[1643] C651 05,C2,CA        B    PEEK         Use PEEK routine
[1644]               *
[1645]               * Set flag bit for VDP read & write
[1646]               *
[1647] C654 B2,80,C2 GKSETV AND  >F0,@GKFLAG  Reset both bits
       C657 F0
[1648] C658 B6,80,C2        OR   8,@GKFLAG    Set VDP bit
       C65B 08
[1649] C65C 00              RTN               Return
[1650]               *
[1651]               * Set flag bit for GROM read & write
[1652]               *
[1653] C65D B2,80,C2 GKSETG AND  >F0,@GKFLAG  Reset both bits
       C660 F0
[1654] C661 B6,80,C2        OR   4,@GKFLAG    Set GROM bit
       C664 04
[1655] C665 00              RTN               Return
[1656]               *
[1657]               * PEEKG routine
[1658]               *
[1659] C666 C6,76    PEEKG  DATA POKEG
[1660] C668 05,50,45        STRI 'PEEKG'
       C66B 45,4B,47
[1661] C66E C6,70           DATA PKG
[1662] C670 06,C6,5D PKG    CALL GKSETG       Set flag bit
[1663] C673 05,C2,CA        B    PEEK         Use PEEK routine
[1664]               *
[1665]               * POKEG routine
[1666]               *
[1667] C676 C6,C4    POKEG  DATA CATLOG
[1668] C678 05,50,4F        STRI 'POKEG'
       C67B 4B,45,47
[1669] C67E C6,80           DATA POG
[1670] C680 06,C6,5D POG    CALL GKSETG       Set flag bit
[1671] C683 BF,02,00        DST  1,@CHKSUM    For LOAD routine
       C686 01
[1672] C687 05,C0,47        B    GC047        Use LOAD routine
[1673]               *
[1674]               * Routine to write to GRAM
[1675]               *
[1676] C68A DA,80,C2 LDGRAM CLOG 4,@GKFLAG    Check GROM bit
       C68D 04

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0029 
EQUATES ALCS-359
[1677] C68E 66,9C           BS   LOADDT       No, CPU load
[1678] C690 2D,00,01        MOVE 1,@FAC1,G@0(@PC) Write to GRAM
       C693 00,00,04
       C696 4B
[1679] C697 91,04           DINC @PC          Point to next byte
[1680] C699 05,C0,60        B    LDP4         Continue
[1681]               *
[1682]               * Relocated data from GKLOAD routine.
[1683]               *
[1684] C69C 35,00,01 LOADDT MOVE 1,@FAC1,@0(@PC)   Read byte
       C69F CF,7D,00
       C6A2 04,4B
[1685] C6A4 91,04           DINC @PC                INC ERAM address
[1686] C6A6 05,C0,60        B    LDP4              Continue with next byte
[1687]               *
[1688]               * Routine to read GRAM/GROM
[1689]               *
[1690] C6A9 DA,80,C2 PKGRAM CLOG 4,@GKFLAG    Check flag
       C6AC 04
[1691] C6AD 66,B9           BS   PEEKDT       No, CPU peek
[1692] C6AF 33,00,01        MOVE 1,G@0(@PC),@FAC1 Yes, read GRAM
       C6B2 4B,00,00
       C6B5 04
[1693] C6B6 05,C3,08        B    GC308        Continue
[1694]               *
[1695]               * Relocated data for CPU PEEK
[1696]               *
[1697] C6B9 35,00,01 PEEKDT MOVE 1,@0(@PC),@FAC1        Read byte
       C6BC 4B,CF,7D
       C6BF 00,04
[1698] C6C1 05,C3,08        B    GC308              Continue
[1699]               ***********************************************************
[1700]               *
[1701]               * Disk catalog routine
[1702]               *
[1703] C6C4 D1,16    CATLOG DATA POKER
[1704] C6C6 03,43,41        STRI 'CAT'             CALL CAT(path)
       C6C9 54
[1705] C6CA C6,CC           DATA GKCAT
[1706]               *
[1707]               *
[1708]               *  X-BASIC DEVICE CATALOGER
[1709]               *  Accessed with a CALL
[1710]               *  PAB is installed in crunch buffer area
[1711]               *
[1712]               *  D.C. Warren 12/17/85
[1713]               *  with modifications by Danny Michael, Jan. 86
[1714]               *
[1715]               *
[1716] C6CC 06,CA,32 GKCAT  CALL GLPARZ            Do we have a '(' ?
[1717] C6CF 06,C9,B7 GKCATA CALL DSKNAM            Get path
[1718]               *
[1719]               * Set up PAB at V>8C0
[1720]               *  Put disk information on the screen
[1721]               *
[1722] C6D2 07,80           ALL  >80                 Clear screen
[1723] C6D4 BD,16,50        DST  @FAC6,@VARB         Get name length
[1724] C6D7 BF,0C,00        DST  151,@BYTES          Length of CAT PAB use
       C6DA 97
[1725] C6DB 0F,71           XML  GETSTR              Get some string space
[1726] C6DD 35,00,96        MOVE 150,V@RECBUF,V*SREF Save USER PAB area
       C6E0 B0,1C,A8
       C6E3 C0
[1727] C6E4 31,00,09        MOVE 9,G@GKPABD,V@RECBUF Install PAB

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0030 
EQUATES ALCS-359
       C6E7 A8,C0,C7
       C6EA 65
[1728] C6EB BC,A8,C9        ST   @FAC7,V@>08C9       Save Length 
       C6EE 51
[1729] C6EF 34,16,A8        MOVE @VARB,V*FAC4,V@>08CA Get PATH
       C6F2 CA,B0,4E
[1730]               *
[1731]               * Open Device
[1732]               *
[1733] C6F5 06,C7,50        CALL GKDSRL            Link to device
[1734]               *
[1735]               * Read first record
[1736]               *
[1737] C6F8 BF,A8,C0        DST  >020D,V@RECBUF    Make PAB a read
       C6FB 02,0D
[1738] C6FD 06,C7,50 GKCAT2 CALL GKDSRL            Link to device
[1739]               *
[1740] C700 BE,02,B9        ST   >B9,@AAA1         Y with offset
[1741] C703 06,C7,6E        CALL GKSCRN            Set up header
[1742] C706 86,01           CLR  @VARV             For GKSCRL routine
[1743] C708 06,C8,0F GKCATL CALL GKTKEY            Check for pause or quit
[1744] C70B 67,1A           BS   GKDONE            Stop!
[1745] C70D 06,C8,25        CALL GKSCRL            Scroll the screen
[1746] C710 06,C7,50        CALL GKDSRL            Read a record
[1747] C713 06,C8,4C        CALL GKFNAM            Print it on screen
[1748] C716 67,1A           BS   GKDONE            If finished
[1749] C718 47,08           BR   GKCATL            Loop
[1750] C71A 06,C7,40 GKDONE CALL GKCLSF            Close file
[1751] C71D D6,42,B3        CEQ  COMMAZ,@CHAT      Comma?
[1752] C720 66,CF           BS   GKCATA            Yes, another drive.
[1753] C722 D6,42,B6        CEQ  RPARZ,@CHAT       Last char a ) ?
[1754] C725 45,33           BR   ERRSYN            No, error
[1755] C727 0F,79           XML  PGMCHR            Parse past ')'
[1756] C729 06,6A,78        CALL CHKEND            SYNTAX error if not end
[1757] C72C 45,33           BR   ERRSYN               .
[1758] C72E 06,00,12        CALL RPL               Return to X-BASIC
[1759]               *
[1760]               * File error
[1761]               *
[1762] C731 BF,04,08 GKERR  DST  RECBUF-4,@PABPTR  Fake a BASIC PAB
       C734 BC
[1763] C735 BD,10,A8        DST  V@RECBUF,@VAR5    Save error
       C738 C0
[1764] C739 06,C7,40        CALL GKCLSF            Close file
[1765] C73C 06,6D,78        CALL G6D78             Return through ERR
[1766] C73F 24              BYTE 36 *              I/O ERROR XX
[1767]               *
[1768]               *
[1769]               * Subroutines
[1770]               *
[1771]               *
[1772]               * Close file
[1773]               *
[1774] C740 BF,A8,C0 GKCLSF DST  >010D,V@RECBUF    A close operation
       C743 01,0D
[1775] C745 06,C7,5C        CALL GKDSR              Link to device
[1776] C748 35,00,97        MOVE 151,V*SREF,V@RECBUF Restore USER PAB area
       C74B A8,C0,B0
       C74E 1C
[1777] C74F 00              RTN                     Return to caller
[1778]               *
[1779]               * DSR LINK with error handling
[1780]               *
[1781] C750 06,C7,5C GKDSRL CALL GKDSR

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0031 
EQUATES ALCS-359
[1782] C753 67,31           BS   GKERR             Branch on no-device
[1783] C755 D6,A8,C1        CEQ  >0D,V@>08C1       Check for device errors
       C758 0D
[1784] C759 47,31           BR   GKERR                .
[1785] C75B 00              RTN                    Return to caller
[1786]               *
[1787]               * DSR LINK routine
[1788]               *
[1789] C75C BF,56,08 GKDSR  DST  >08C9,@FAC12      Name length pointer
       C75F C9
[1790] C760 06,00,10        CALL >10               Call DSR
[1791] C763 08              BYTE 8 *               DSR call
[1792] C764 01              RTNC                   Return with COND bit
[1793] C765 00,0D,09 GKPABD BYTE 0,>D,9,0,0,0,0,0,0
       C768 00,00,00
       C76B 00,00,00
[1794]               *
[1795]               * Screen - prints initial screen and disk info
[1796]               *
[1797] C76E 08       GKSCRN FMT
[1798] C76F FC,60            SCRO >60
[1799] C771 FE,01            ROW  1
[1800] C773 FF,02            COL  2
[1801] C775 09,44,49         HTEX 'DIRECTORY='
       C778 52,45,43
       C77B 54,4F,52
       C77E 59,3D
[1802] C780 FE,02            ROW 2
[1803] C782 FF,02            COL 2
[1804] C784 13,46,72         HTEX 'Free=          Used='
       C787 65,65,3D
       C78A 20,20,20
       C78D 20,20,20
       C790 20,20,20
       C793 20,55,73
       C796 65,64,3D
[1805] C799 FE,16            ROW  22
[1806] C79B FF,03            COL 3
[1807] C79D 1B,46,69         HTEX 'Filename  Size    Type     P'
       C7A0 6C,65,6E
       C7A3 61,6D,65
       C7A6 20,20,53
       C7A9 69,7A,65
       C7AC 20,20,20
       C7AF 20,54,79
       C7B2 70,65,20
       C7B5 20,20,20
       C7B8 20,50
[1808] C7BA A0               ROW+ 1
[1809] C7BB FF,02            COL 2
[1810] C7BD 1C,2D,2D         HTEX '---------- ---- ----------- -'
       C7C0 2D,2D,2D
       C7C3 2D,2D,2D
       C7C6 2D,2D,20
       C7C9 2D,2D,2D
       C7CC 2D,20,2D
       C7CF 2D,2D,2D
       C7D2 2D,2D,2D
       C7D5 2D,2D,2D
       C7D8 2D,20,2D
[1811] C7DB FB              FEND
[1812] C7DC 06,C9,39        CALL GKDSTR       Get path $ into FAC
[1813] C7DF 8E,4B           CZ   @FAC+1       Skip if zero length
[1814] C7E1 67,ED           BS   GKCAT3

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0032 
EQUATES ALCS-359
[1815] C7E3 08              FMT
[1816] C7E4 FC,60            SCRO >60
[1817] C7E6 FE,01            ROW 1
[1818] C7E8 FF,0D            COL 13
[1819] C7EA E9,4C            HSTR 10,@FAC+2
[1820] C7EC FB              FEND
[1821] C7ED A1,10,4A GKCAT3 DADD @FAC,@VAR5   Go to next field
[1822] C7F0 A3,10,00        DADD 19,@VAR5     Continue to last field
       C7F3 13
[1823] C7F4 BF,14,00        DST  73,@VAR9     Set up screen addr
       C7F7 49
[1824] C7F8 06,C9,13        CALL GKDNUM       Display available space
[1825]               * Display used space
[1826] C7FB A7,10,00        DSUB 9,@VAR5      Point to formatted space
       C7FE 09
[1827] C7FF 35,00,08        MOVE 8,V*VAR5,@ARG Move it to ARG
       C802 5C,B0,10
[1828] C805 0F,07           XML  FSUB         Develop used value
[1829] C807 BF,14,00        DST  88,@VAR9     Set up screen addr
       C80A 58
[1830] C80B 06,C9,19        CALL GKDNU1       Display used space
[1831] C80E 00              RTN               Return
[1832]               *
[1833]               * Test for space and FCTN 4
[1834]               *
[1835] C80F 03       GKTKEY SCAN              Scan the keyboard
[1836] C810 48,1F           BR   GKTKE1       Continue if no new key
[1837] C812 D6,75,20        CEQ  SPACE,@RKEY  SPACE key?
[1838] C815 48,20           BR   GKTKE2       NO! Abort.
[1839] C817 03       GKTKE3 SCAN              Scan keyboard
[1840] C818 48,17           BR   GKTKE3       Loop until new key press
[1841] C81A D6,75,20        CEQ  SPACE,@RKEY  SPACE key?
[1842] C81D 48,20           BR   GKTKE2       NO! Abort.
[1843] C81F 00       GKTKE1 RTN               Return
[1844] C820 86,00    GKTKE2 CLR  @VAR0        Clear a byte
[1845] C822 8E,00           CZ   @VAR0        Set COND bit
[1846] C824 01              RTNC              Return w/COND
[1847]               *
[1848]               * Scroll the screen
[1849]               *
[1850] C825 C6,01,12 GKSCRL CH   18,@VARV           Check line counter
[1851] C828 68,43           BS   GKSCL1             Short scroll
[1852] C82A 90,01           INC  @VARV              Line count +1
[1853] C82C 35,02,80        MOVE >280,V@>80,V@>60   Scroll screen
       C82F A0,60,A0
       C832 80
[1854] C833 BE,A2,E0 GKSCL2 ST   SPACE,V@>2E0       Clear last line
       C836 20
[1855] C837 A2,A2,E0        ADD  >60,V@>2E0
       C83A 60
[1856] C83B 35,00,1F        MOVE >1F,V@>2E0,V@>2E1
       C83E A2,E1,A2
       C841 E0
[1857] C842 00              RTN                     Return
[1858] C843 35,02,40 GKSCL1 MOVE >240,V@>C0,V@>A0
       C846 A0,A0,A0
       C849 C0
[1859] C84A 48,33           BR   GKSCL2
[1860]               *
[1861]               * Display one file on screen
[1862]               *
[1863] C84C 06,C9,39 GKFNAM CALL GKDSTR       Get string into FAC
[1864] C84F 8E,4B           CZ   @FAC+1       Skip display if zero
[1865] C851 68,5D           BS   GKCAT5        length

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0033 
EQUATES ALCS-359
[1866] C853 08              FMT
[1867] C854 FC,60            SCRO >60         Put disk name on screen
[1868] C856 FE,17            ROW   23            .
[1869] C858 FF,02            COL   02            .
[1870] C85A E9,4C            HSTR 10,@FAC+2      .
[1871] C85C FB              FEND                 .
[1872] C85D A1,10,4A GKCAT5 DADD @FAC,@VAR5   Go to next field
[1873] C860 A3,10,00        DADD 10,@VAR5     Continue another field
       C863 0A
[1874] C864 8F,B0,10        DCZ  V*VAR5       Time to get out if
[1875] C867 69,0E           BS   GKFNA1        zero file size
[1876] C869 BF,14,02        DST  >2EA,@VAR9   Set up screen address
       C86C EA
[1877] C86D 06,C9,13        CALL GKDNUM       Display file length
[1878] C870 A7,10,00        DSUB 9,@VAR5      Back a field
       C873 09
[1879] C874 35,00,08        MOVE 8,V*VAR5,@FAC Move it into FAC
       C877 4A,B0,10
[1880] C87A 0F,12           XML  CFI          Convert it to an int.
[1881] C87C 8E,4A           CZ   @FAC         Non-negative?
[1882] C87E 68,86           BS   GKCAT7       YES! File not protected
[1883] C880 BE,A2,FE        ST   185,V@>02FE   Put a 'Y' on screen
       C883 B9
[1884] C884 83,4A           DNEG @FAC         Make number positive
[1885] C886 92,4B    GKCAT7 DEC  @FAC+1       Adjust for CASE
[1886] C888 8A,4B           CASE @FAC+1       Show file type
[1887] C88A 48,96           BR   GKDF
[1888] C88C 48,A8           BR   GKDV
[1889] C88E 48,BA           BR   GKIF
[1890] C890 48,CC           BR   GKIV
[1891] C892 48,DE           BR   GKPR
[1892] C894 48,EF           BR   GKDIR
[1893] C896 08       GKDF   FMT
[1894] C897 FC,60            SCRO >60
[1895] C899 FE,17            ROW   23
[1896] C89B FF,12            COL   18
[1897] C89D 06,44,69         HTEX 'Dis/Fix'
       C8A0 73,2F,46
       C8A3 69,78
[1898] C8A5 FB              FEND
[1899] C8A6 49,02           BR   GKCAT6
[1900] C8A8 08       GKDV   FMT
[1901] C8A9 FC,60            SCRO >60
[1902] C8AB FE,17            ROW   23
[1903] C8AD FF,12            COL   18
[1904] C8AF 06,44,69         HTEX 'Dis/Var'
       C8B2 73,2F,56
       C8B5 61,72
[1905] C8B7 FB              FEND
[1906] C8B8 49,02           BR   GKCAT6
[1907] C8BA 08       GKIF   FMT
[1908] C8BB FC,60            SCRO >60
[1909] C8BD FE,17            ROW   23
[1910] C8BF FF,12            COL   18
[1911] C8C1 06,49,6E         HTEX 'Int/Fix'
       C8C4 74,2F,46
       C8C7 69,78
[1912] C8C9 FB              FEND
[1913] C8CA 49,02           BR   GKCAT6
[1914] C8CC 08       GKIV   FMT
[1915] C8CD FC,60            SCRO >60
[1916] C8CF FE,17            ROW   23
[1917] C8D1 FF,12            COL   18
[1918] C8D3 06,49,6E         HTEX 'Int/Var'

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0034 
EQUATES ALCS-359
       C8D6 74,2F,56
       C8D9 61,72
[1919] C8DB FB              FEND
[1920] C8DC 49,02           BR   GKCAT6
[1921] C8DE 08       GKPR   FMT
[1922] C8DF FC,60            SCRO >60
[1923] C8E1 FE,17            ROW   23
[1924] C8E3 FF,12            COL   18
[1925] C8E5 06,50,72         HTEX 'Program'
       C8E8 6F,67,72
       C8EB 61,6D
[1926] C8ED FB              FEND
[1927] C8EE 00              RTN
[1928] C8EF 08       GKDIR  FMT
[1929] C8F0 FC,60           SCRO  >60
[1930] C8F2 FE,17           ROW   23
[1931] C8F4 FF,12           COL   18
[1932] C8F6 08,44,69        HTEX  'Directory'
       C8F9 72,65,63
       C8FC 74,6F,72
       C8FF 79
[1933] C900 FB              FEND
[1934] C901 00              RTN               Return
[1935] C902 A3,10,00 GKCAT6 DADD 18,@VAR5     Advavce two fields
       C905 12
[1936] C906 BF,14,02        DST  >2F6,@VAR9   Set up screen address
       C909 F6
[1937] C90A 06,C9,13        CALL GKDNUM       Display record length
[1938] C90D 00              RTN               Return
[1939] C90E 86,00    GKFNA1 CLR  @VAR0        Clear a byte
[1940] C910 8E,00           CZ   @VAR0        Set COND bit
[1941] C912 01              RTNC              Return w/COND
[1942]               * Display number subroutine
[1943]               *  ENTER: Floating number in FAC for GKDNU1
[1944]               *         Screen address in VAR9
[1945]               *
[1946] C913 35,00,08 GKDNUM MOVE 8,V*VAR5,@FAC Move FLP number to FAC
       C916 4A,B0,10
[1947]                
[1948] C919 86,55    GKDNU1 CLR  @FAC+11      Indicate a free format
[1949] C91B 0F,73           XML  XCNS         Convert FAC to a string
[1950] C91D BF,16,00        DST  7,@VARB      Right justify number
       C920 07
[1951] C921 A4,17,56        SUB  @FAC+12,@VARB+1
[1952] C924 A1,14,16        DADD @VARB,@VAR9
[1953] C927 A2,90,55 GKDNU2 ADD  >60,*FAC+11     Add offset to string
       C92A 60
[1954] C92B BC,B0,14        ST   *FAC+11,V*VAR9  Put a char on the screen
       C92E 90,55
[1955] C930 91,14           DINC @VAR9           Increment screen addr.
[1956] C932 90,55           INC  @FAC+11         Increment FAC addr.
[1957] C934 92,56           DEC  @FAC+12         Decrement string length count
[1958] C936 49,27           BR   GKDNU2          Loop until done
[1959] C938 00              RTN                  Return to caller
[1960]               *
[1961]               * Prepare a VDP string for FORMAT statement
[1962]               *  LEAVE: FAC has string length (word)
[1963]               *         FAC+2 has string
[1964]               *         VAR5 pointing to next string in record
[1965]               *
[1966] C939 BF,10,09 GKDSTR DST  >0900,@VAR5   Get buffer address
       C93C 00
[1967] C93D 86,4A           CLR  @FAC          Clear MSB of FAC word
[1968] C93F BC,4B,B0        ST   V*VAR5,@FAC+1 Store disk name length

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0035 
EQUATES ALCS-359
       C942 10
[1969] C943 91,10           DINC @VAR5         Point to string
[1970] C945 BE,4C,20        ST   >20,@FAC+2    Clear out string space
[1971] C948 35,00,09        MOVE 9,@FAC+2,@FAC+3  .
       C94B 4D,4C
[1972] C94D 34,4A,4C        MOVE @FAC,V*VAR5,@FAC+2 Move disk name into FAC
       C950 B0,10
[1973] C952 00              RTN
[1974]               ***********************************************************
[1975] C953 06,CA,38 DEVNAM CALL STRFCH            Get path string
[1976] C956 D6,4C,65        CEQ  >65,@FAC2         Do we have a string?
[1977] C959 69,8A           BS   DEV1              YES, normal execution
[1978] C95B 0F,12           XML  CFI               Convert FAC to integer
[1979] C95D D6,54,03        CEQ  >03,@FAC10        OK?
[1980] C960 65,A2           BS   ERRBV             No.
[1981] C962 CA,4B,1E        CHE  30,@FAC1          ASCII?
[1982] C965 69,6F           BS   DEVASC            Yes.
[1983] C967 CA,4B,0A        CHE  10,@FAC1          Higher then 9?
[1984] C96A 65,A2           BS   ERRBV             No, error
[1985] C96C A2,4B,30        ADD  48,@FAC1          Make it ASCII.
[1986] C96F BC,54,4B DEVASC ST   @FAC1,@TEMP1      Save the number
[1987] C972 BF,0C,00 DEV0   DST  5,@BYTES          Set up for a string
       C975 05
[1988] C976 0F,71           XML  GETSTR            Get string space
[1989] C978 31,00,05        MOVE 5,G@DSKSUB,V*SREF Save the string
       C97B B0,1C,C9
       C97E 98
[1990] C97F BC,E0,03        ST   @TEMP1,V@3(@SREF) Store the number
       C982 1C,54
[1991] C984 BD,50,0C        DST  @BYTES,@FAC6      Copy string length.
[1992] C987 BD,4E,1C        DST  @SREF,@FAC4       Copy string address.
[1993] C98A 8F,50    DEV1   DCZ  @FAC6             Is it a null string?
[1994] C98C 65,9A           BS   ERRBA             YES! Bad Argument
[1995] C98E BC,54,B0        ST   V*FAC4,@TEMP1     Save device number
       C991 4E
[1996] C992 D6,51,01        CEQ  1,@FAC7           Length 1?
[1997] C995 69,72           BS   DEV0              Yes
[1998] C997 00              RTN
[1999] C998 44,53,4B DSKSUB TEXT 'DSK#.'
       C99B 23,2E
[2000]               *******************************
[2001] C99D 88,5A    DSKDSR FETCH @FAC16           * Get Length of name
[2002] C99F 88,5B           FETCH @FAC17           * Get Subroutine #
[2003] C9A1 BD,A3,C0        DST   @FAC16,V@>03C0   * Load into PAB
       C9A4 5A
[2004] C9A5 BF,56,03        DST   >03C0,@FAC12     * PAB address in VDP
       C9A8 C0
[2005] C9A9 06,00,10        CALL  LINK             * DSRLNK
[2006] C9AC 0A              BYTE  >0A              * Subroutine
[2007] C9AD 65,B5           BS    ERRFE            * File Error
[2008] C9AF E6,50,05        SRL   5,@FAC6          *
[2009] C9B2 8E,50           CZ    @FAC6            *
[2010] C9B4 45,B5           BR    ERRFE            * File Error
[2011] C9B6 00              RTN                    *
[2012]               *******************************
[2013] C9B7 06,C9,53 DSKNAM CALL DEVNAM            * DSK# SCS# WDS# HDK# IDE#
[2014] C9BA 35,00,05        MOVE 5,V*FAC4,@ARG     * Get device name
       C9BD 5C,B0,4E
[2015] C9C0 BC,17,5F        ST   @ARG3,@DEVNUM     * Save device number characte
[2016] C9C3 D7,5C,44        DCEQ 'DS',@ARG         * DS? Disk
       C9C6 53
[2017] C9C7 49,D2           BR   DSKNA1            * No
[2018] C9C9 D6,5E,4B        CEQ  'K',@ARG2         * K?
[2019] C9CC 45,9A           BR   ERRBA             * Error Bad Argument

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0036 
EQUATES ALCS-359
[2020] C9CE 86,16           CLR  @DFLAG            * Set DSK flag
[2021] C9D0 4A,01           BR   DSKNA5            * Go sub 48
[2022] C9D2 D7,5C,48 DSKNA1 DCEQ 'HD',@ARG         * HD? Hard Drive   
       C9D5 44
[2023] C9D6 49,DF           BR   DSKNA2            * No
[2024] C9D8 D6,5E,4B        CEQ  'K',@ARG2         * K?  Hard Drive
[2025] C9DB 69,F9           BS   DSKNA4            * Go set HARD flag
[2026] C9DD 45,9A           BR   ERRBA             * Error Bad Argument       
[2027] C9DF D7,5C,53 DSKNA2 DCEQ 'SC',@ARG         * SC? Hard Drive
       C9E2 43
[2028] C9E3 69,EB           BS   DSKNA3            * Go check S?       
[2029] C9E5 D7,5C,57        DCEQ 'WD',@ARG         * WD? Hard Drive
       C9E8 44
[2030] C9E9 45,9A           BR   ERRBA             * Error Bad Argument
[2031] C9EB D6,5E,53 DSKNA3 CEQ  'S',@ARG2         * S?  Hard Drive
[2032] C9EE D7,5C,49        DCEQ 'ID',@ARG         * ID? Hard Drive       
       C9F1 44
[2033] C9F2 45,9A           BR   ERRBA             * Error Bad Argument
[2034] C9F4 D6,5E,49        CEQ  'I',@ARG2         * I? Hard Drive
[2035] C9F7 45,9A           BR   ERRBA             * Error Bad Argument
[2036] C9F9 BE,16,FF DSKNA4 ST   >FF,@DFLAG        * Set SCS or WDS or HDK flag
[2037] C9FC BD,10,4E        DST  @FAC4,@VAR5       * Get string address
[2038] C9FF 93,10           DDEC @VAR5             * Point to PATH string length
[2039] CA01 A6,17,30 DSKNA5 SUB  48,@DEVNUM        * DSK# or SCS# or WDS# -1
[2040] CA04 00              RTN
[2041]               *******************************
[2042] CA05 06,CA,3E GETFN  CALL STRGET            * Get string
[2043] CA08 C6,51,0A        CH   10,@FAC7          * Length > 10?
[2044] CA0B 65,3F           BS   ERRNTL            * Error Name Too Long
[2045] CA0D 8F,50           DCZ  @FAC6             * Length = 0?
[2046] CA0F 65,9A           BS   ERRBA             * Error Bad Argument
[2047] CA11 BE,A3,C0        ST   >20,V@>03C0       * Clear PATH buffer
       CA14 20
[2048] CA15 35,00,1F        MOVE 31,V@>03C0,V@>03C1
       CA18 A3,C1,A3
       CA1B C0
[2049] CA1C 34,50,A3        MOVE @FAC6,V*FAC4,V@>03C2 * File name
       CA1F C2,B0,4E
[2050] CA22 00              RTN
[2051]               *******************************
[2052] CA23 BC,4C,17 PATH   ST   @DEVNUM,@FAC2     * Device #
[2053] CA26 BD,4E,10        DST  @VAR5,@FAC4       * Pathname address lenght/str
[2054] CA29 BF,A3,C0        DST  >0127,V@>03C0     * Opcode of PATHNAME subrouti
       CA2C 01,27
[2055] CA2E 06,D7,3F        CALL RWDSR             * Read/Write DSR LINK
[2056] CA31 00              RTN                    *
[2057]               *******************************
[2058] CA32 D6,42,B7 GLPARZ CEQ  LPARZ,@CHAT
[2059] CA35 45,33           BR   ERRSYN
[2060] CA37 00              RTN
[2061] CA38 0F,79    STRFCH XML  PGMCHR
[2062] CA3A 0F,74           XML  PARSE
[2063] CA3C B6              BYTE RPARZ
[2064] CA3D 00              RTN
[2065] CA3E 06,CA,38 STRGET CALL STRFCH
[2066] CA41 D6,4C,65        CEQ  >65,@FAC2
[2067] CA44 45,43           BR   ERRSNM      * STRING NUM MISMATCH
[2068] CA46 00              RTN
[2069] CA47 06,CA,38 NUMFCH CALL STRFCH
[2070] CA4A D6,4C,65        CEQ  >65,@FAC2
[2071] CA4D 65,43           BS   ERRSNM      * STRING NUM MISMATCH
[2072] CA4F 00              RTN
[2073] CA50 0F,12    CFIFCH XML  CFI
[2074] CA52 D6,54,03        CEQ  >03,@FAC+10

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0037 
EQUATES ALCS-359
[2075] CA55 65,A2           BS   ERRBV       * NUMERIC OVERFLOW
[2076] CA57 00              RTN
[2077] CA58 06,CA,88 GETNUM CALL SUBLP3
[2078] CA5B D6,42,B3        CEQ  >B3,@CHAT
[2079] CA5E 45,33           BR   ERRSYN
[2080] CA60 00              RTN
[2081] CA61 0F,79    NGOOD  XML  PGMCHR
[2082] CA63 D6,42,80        CEQ  >80,@CHAT
[2083] CA66 65,33           BS   ERRSYN         * ?
[2084] CA68 06,CA,7C        CALL SNDER
[2085] CA6B D6,4C,65        CEQ  >65,@FAC2
[2086] CA6E 45,9A           BR   ERRBA          * BAD ARGUMENT
[2087] CA70 BF,4A,00        DST  >001C,@FAC
       CA73 1C
[2088] CA74 BD,4E,1C        DST  @SREF,@FAC4
[2089] CA77 BD,50,0C        DST  @BYTES,@FAC6
[2090] CA7A 4A,85           BR   SNDASS
[2091] CA7C 0F,7A    SNDER  XML  SYM
[2092] CA7E 0F,7B           XML  SMB
[2093] CA80 0F,77           XML  VPUSH
[2094] CA82 00              RTN
[2095] CA83 0F,80    CIFSND XML  CIF
[2096] CA85 0F,7C    SNDASS XML  ASSGNV
[2097] CA87 00              RTN
[2098] CA88 06,CA,47 SUBLP3 CALL NUMFCH
[2099] CA8B 06,CA,50        CALL CFIFCH
[2100] CA8E 00              RTN
[2101]               ***********************************************************
[2102]               * CPU PROGRAM FOR >8300 SCATCH PAD SUBROUTINE AMSCPU      *
[2103]               ***********************************************************
[2104]               *                 *        AORG >8300
[2105] CA8F 83,02    AMSCRU DATA >8302 * CPUPGM DATA >8302      * First address.
[2106] CA91 04,20           DATA >0420 *        BLWP @AMSCPU    * Switch contex
[2107] CA93 83,0C           DATA >830C *
[2108] CA95 04,E0           DATA >04E0 *        CLR  @>837C     * Clear for GPL
[2109] CA97 83,7C           DATA >837C *
[2110] CA99 04,5B           DATA >045B *        RT              * Return to GPL.
[2111]               ***********************************************************
[2112]               *                 * AMS CPU SUBPROGRAM
[2113] CA9B 83,4A           DATA >834A * AMSCPU DATA >834A
[2114] CA9D 83,10           DATA >8310 *        DATA AMSCRU
[2115] CA9F 02,0C           DATA >020C * AMSCRU LI   R12,>1E00
[2116] CAA1 1E,00           DATA >1E00 *
[2117] CAA3 1D,00           DATA >1D00 *        SBO  0
[2118] CAA5 03,80           DATA >0380 *        RTWP
[2119]               *                 *        END
[2120]               ***********************************************************
[2121]               * CPU PROGRAM FOR >8300 SCRATCH PAD CPU ISR HOOK ON  *
[2122]               ******************************************************
[2123]               *                  *        AORG >8300
[2124] CAA7 83,02    GISRON DATA >8302  *        DATA >8302
[2125] CAA9 C8,20           DATA >C820  *        MOV  @>834A,@>83C4
[2126] CAAB 83,4A           DATA >834A  *
[2127] CAAD 83,C4           DATA >83C4  *
[2128] CAAF 04,E0           DATA >04E0  * EXIT   CLR  @>837C
[2129] CAB1 83,7C           DATA >837C  *
[2130] CAB3 04,5B           DATA >045B  *        RT
[2131]               *                  *        END
[2132]               ***********************************************************
[2133]               * CPU PROGRAM FOR >8300 SCRATCH PAD CPU ISR HOOK OFF *
[2134]               ******************************************************
[2135]               *                          AORG >8300
[2136] CAB5 83,02    GISROF DATA >8302 *        DATA >8302
[2137] CAB7 C8,20           DATA >C820 * ISROFF MOV  @>83C4,@>83C4

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0038 
EQUATES ALCS-359
[2138] CAB9 83,C4           DATA >83C4 *
[2139] CABB 83,C4           DATA >83C4 *
[2140] CABD 13,05           DATA >1305 *        JEQ  NHOOK
[2141] CABF C8,20           DATA >C820 *        MOV  @>83C4,@>834A
[2142] CAC1 83,C4           DATA >83C4 *
[2143] CAC3 83,4A           DATA >834A *
[2144] CAC5 04,E0           DATA >04E0 * NHOOK  CLR  @>83C4
[2145] CAC7 83,C4           DATA >83C4 *
[2146] CAC9 04,E0           DATA >04E0 *        CLR  @>837C
[2147] CACB 83,7C           DATA >837C *
[2148] CACD 04,5B           DATA >045B *        RT
[2149]               *                 *        END
[2150]               ***********************************************************
[2151]              
[2152]                      AORG >0B00
[2153]               ***********************************************************
[2154]               *                BASIC KEYWORD TABLE
[2155]               *      THE TOKEN IS ITS LEFT BINDING POWER
[2156]               ***********************************************************
[2157] CB00 CB,14,CB KEYTAB DATA CHAR1,CHAR2,CHAR3,CHAR4,CHAR5
       CB03 35,CB,4E
       CB06 CB,EF,CC
       CB09 59
[2158] CB0A CC,A8,CC        DATA CHAR6,CHAR7,CHAR8,CHAR9,CHARA
       CB0D F6,CD,2F
       CB10 CD,5D,CD
       CB13 68
[2159] CB14 21       CHAR1  TEXT '!'
[2160] CB15 83              BYTE TREMZ             *  !
[2161] CB16 23              TEXT '#'
[2162] CB17 FD              BYTE NUMBEZ            *  #
[2163] CB18 26              TEXT '&'
[2164] CB19 B8              BYTE CONCZ             *  &
[2165] CB1A 28              TEXT '('
[2166] CB1B B7              BYTE LPARZ             *  (
[2167] CB1C 29              TEXT ')'
[2168] CB1D B6              BYTE RPARZ             *  )
[2169] CB1E 2A              TEXT '*'
[2170] CB1F C3              BYTE MULTZ             *  *
[2171] CB20 2B              TEXT '+'
[2172] CB21 C1              BYTE PLUSZ             *  +
[2173] CB22 2C              TEXT ','
[2174] CB23 B3              BYTE COMMAZ            *  ,
[2175] CB24 2D              TEXT '-'
[2176] CB25 C2              BYTE MINUSZ            *  -
[2177] CB26 2F              TEXT '/'
[2178] CB27 C4              BYTE DIVIZ             *  /
[2179] CB28 3A              TEXT ':'
[2180] CB29 B5              BYTE COLONZ            *  :
[2181] CB2A 3B              TEXT ';'
[2182] CB2B B4              BYTE SEMICZ            *  ;
[2183] CB2C 3C              TEXT '<'
[2184] CB2D BF              BYTE LESSZ             *  <
[2185] CB2E 3D              TEXT '='
[2186] CB2F BE              BYTE EQUALZ            *  =
[2187] CB30 3E              TEXT '>'
[2188] CB31 C0              BYTE GREATZ            *  >
[2189] CB32 5E              TEXT '^'
[2190] CB33 C5              BYTE CIRCUZ            *  ^
[2191] CB34 FF              BYTE >FF
[2192] CB35 3A,3A    CHAR2  TEXT '::'
[2193] CB37 82              BYTE SSEPZ             *  ::
[2194] CB38 41,54           TEXT 'AT'
[2195] CB3A F0              BYTE ATZ               *  AT

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0039 
EQUATES ALCS-359
[2196] CB3B 47,4F           TEXT 'GO'
[2197] CB3D 85              BYTE GOZ               *  GO * RXB MOTION
[2198] CB3E 49,46           TEXT 'IF'
[2199] CB40 84              BYTE IFZ               *  IF
[2200] CB41 4F,4E           TEXT 'ON'
[2201] CB43 9B              BYTE ONZ               *  ON * ONKEY
[2202] CB44 4F,52           TEXT 'OR'
[2203] CB46 BA              BYTE ORZ               *  OR
[2204] CB47 50,49           TEXT 'PI'
[2205] CB49 DD              BYTE PIZ               *  PI
[2206] CB4A 54,4F           TEXT 'TO'
[2207] CB4C B1              BYTE TOZ               *  TO
[2208] CB4D FF              BYTE >FF
[2209] CB4E 41,42,53 CHAR3  TEXT 'ABS'
[2210] CB51 CB              BYTE ABSZ              *  ABS
[2211] CB52 41,4C,4C        TEXT 'ALL'
[2212] CB55 EC              BYTE ALLZ              *  ALL
[2213] CB56 41,4E,44        TEXT 'AND'
[2214] CB59 BB              BYTE ANDZ              *  AND
[2215] CB5A 41,53,43        TEXT 'ASC'
[2216] CB5D DC              BYTE ASCZ              *  ASC
[2217] CB5E 41,54,4E        TEXT 'ATN'
[2218] CB61 CC              BYTE ATNZ              *  ATN
[2219] CB62 42,59,45        TEXT 'BYE'
[2220] CB65 03              BYTE >03               *  BYE
[2221] CB66 43,4F,4E        TEXT 'CON'
[2222] CB69 01              BYTE >01               *  CONtinue
[2223] CB6A 43,4F,53        TEXT 'COS'
[2224] CB6D CD              BYTE COSZ              *  COS
[2225] CB6E 44,45,46        TEXT 'DEF'
[2226] CB71 89              BYTE DEFZ              *  DEF
[2227]               * GKXB added token
[2228] CB72 44,45,4C        TEXT 'DEL'
[2229] CB75 09              BYTE >09               *  DEL
[2230] CB76 44,49,4D        TEXT 'DIM'
[2231] CB79 8A              BYTE DIMZ              *  DIM
[2232] CB7A 45,4E,44        TEXT 'END'
[2233] CB7D 8B              BYTE ENDZ              *  END
[2234] CB7E 45,4F,46        TEXT 'EOF'
[2235] CB81 CA              BYTE EOFZ              *  EOF
[2236] CB82 45,58,50        TEXT 'EXP'
[2237] CB85 CE              BYTE EXPZZ             *  EXP
[2238] CB86 46,4F,52        TEXT 'FOR'
[2239] CB89 8C              BYTE FORZ              *  FOR
[2240] CB8A 49,4E,54        TEXT 'INT'
[2241] CB8D CF              BYTE INTZ              *  INT
[2242] CB8E 4C,45,4E        TEXT 'LEN'
[2243] CB91 D5              BYTE LENZ              *  LEN
[2244] CB92 4C,45,54        TEXT 'LET'
[2245] CB95 8D              BYTE LETZ              *  LET
[2246] CB96 4C,4F,47        TEXT 'LOG'
[2247] CB99 D0              BYTE LOGZ              *  LOG
[2248] CB9A 4D,41,58        TEXT 'MAX'
[2249] CB9D DF              BYTE MAXZ              *  MAX
[2250] CB9E 4D,49,4E        TEXT 'MIN'
[2251] CBA1 E0              BYTE MINZ              *  MIN
[2252] CBA2 4E,45,57        TEXT 'NEW'
[2253] CBA5 00              BYTE >00               *  NEW * RXB CALL NEW
[2254] CBA6 4E,4F,54        TEXT 'NOT'
[2255] CBA9 BD              BYTE NOTZ              *  NOT
[2256] CBAA 4E,55,4D        TEXT 'NUM'
[2257] CBAD 04              BYTE >04               *  NUMber
[2258] CBAE 4F,4C,44        TEXT 'OLD'
[2259] CBB1 05              BYTE >05               *  OLD

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0040 
EQUATES ALCS-359
[2260] CBB2 50,4F,53        TEXT 'POS'
[2261] CBB5 D9              BYTE POSZ              *  POS
[2262] CBB6 52,45,43        TEXT 'REC'
[2263] CBB9 DE              BYTE RECZ              *  REC
[2264] CBBA 52,45,4D        TEXT 'REM'
[2265] CBBD 9A              BYTE REMZ              *  REMark
[2266] CBBE 52,45,53        TEXT 'RES'
[2267] CBC1 06              BYTE >06               *  RESequence
[2268] CBC2 52,4E,44        TEXT 'RND'
[2269] CBC5 D7              BYTE RNDZ              *  RND
[2270]               * RXB PATCH CODE
[2271] CBC6 52,41,4E        TEXT 'RAN'            
[2272] CBC9 E2              BYTE RANZ              *  RAN * RXB RND
[2273] CBCA 52,55,4E        TEXT 'RUN'
[2274] CBCD A9              BYTE RUNZ              *  RUN 
[2275] CBCE 53,47,4E        TEXT 'SGN'
[2276] CBD1 D1              BYTE SGNZZ             *  SGN
[2277] CBD2 53,49,4E        TEXT 'SIN'
[2278] CBD5 D2              BYTE SINZ              *  SIN
[2279] CBD6 53,51,52        TEXT 'SQR'
[2280] CBD9 D3              BYTE SQRZ              *  SQR
[2281] CBDA 53,55,42        TEXT 'SUB'
[2282] CBDD A1              BYTE SUBZ              *  SUB
[2283] CBDE 54,41,42        TEXT 'TAB'
[2284] CBE1 FC              BYTE TABZ              *  TAB
[2285] CBE2 54,41,4E        TEXT 'TAN'
[2286] CBE5 D4              BYTE TANZ              *  TAN
[2287] CBE6 56,41,4C        TEXT 'VAL'
[2288] CBE9 DA              BYTE VALZ              *  VAL
[2289] CBEA 58,4F,52        TEXT 'XOR'
[2290] CBED BC              BYTE XORZ              *  XOR
[2291] CBEE FF              BYTE >FF
[2292] CBEF 42,41,53 CHAR4  TEXT 'BASE'
       CBF2 45
[2293] CBF3 F1              BYTE BASEZ             *  BASE
[2294] CBF4 42,45,45        TEXT 'BEEP'
       CBF7 50
[2295] CBF8 EE              BYTE BEEPZ             *  BEEP
[2296] CBF9 43,41,4C        TEXT 'CALL'
       CBFC 4C
[2297] CBFD 9D              BYTE CALLZ             *  CALL
[2298] CBFE 43,48,52        TEXT 'CHR$'
       CC01 24
[2299] CC02 D6              BYTE CHRZZ             *  CHR$
[2300]               * GKXB added token
[2301] CC03 43,4F,50        TEXT 'COPY'
       CC06 59
[2302] CC07 0A              BYTE >0A               *  COPY
[2303] CC08 44,41,54        TEXT 'DATA'
       CC0B 41
[2304] CC0C 93              BYTE DATAZ             *  DATA
[2305] CC0D 45,4C,53        TEXT 'ELSE'
       CC10 45
[2306] CC11 81              BYTE ELSEZ             *  ELSE
[2307] CC12 47,4F,54        TEXT 'GOTO'
       CC15 4F
[2308] CC16 86              BYTE GOTOZ             *  GOTO * RXB ONKEY
[2309] CC17 4C,49,53        TEXT 'LIST'
       CC1A 54
[2310] CC1B 02              BYTE >02               *  LIST
[2311]               * GKXB added token
[2312] CC1C 4D,4F,56        TEXT 'MOVE'
       CC1F 45
[2313] CC20 0B              BYTE >0B               *  MOVE

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0041 
EQUATES ALCS-359
[2314] CC21 4E,45,58        TEXT 'NEXT'
       CC24 54
[2315] CC25 96              BYTE NEXTZ             *  NEXT
[2316] CC26 4F,50,45        TEXT 'OPEN'
       CC29 4E
[2317] CC2A 9F              BYTE OPENZ             *  OPEN
[2318] CC2B 52,45,41        TEXT 'READ'
       CC2E 44
[2319] CC2F 97              BYTE READZ             *  READ
[2320] CC30 52,50,54        TEXT 'RPT$'
       CC33 24
[2321] CC34 E1              BYTE RPTZZ             *  RPT$
[2322] CC35 53,41,56        TEXT 'SAVE'
       CC38 45
[2323] CC39 07              BYTE >07               *  SAVE * RXB SAVE IV254
[2324] CC3A 53,45,47        TEXT 'SEG$'
       CC3D 24
[2325] CC3E D8              BYTE SEGZZ             *  SEG$
[2326] CC3F 53,49,5A        TEXT 'SIZE'
       CC42 45
[2327] CC43 EB              BYTE SIZEZ             *  SIZE * RXB CALL SIZE
[2328] CC44 53,54,45        TEXT 'STEP'
       CC47 50
[2329] CC48 B2              BYTE STEPZ             *  STEP
[2330] CC49 53,54,4F        TEXT 'STOP'
       CC4C 50
[2331] CC4D 98              BYTE STOPZ             *  STOP * RXB MOTION
[2332] CC4E 53,54,52        TEXT 'STR$'
       CC51 24
[2333] CC52 DB              BYTE STRZZ             *  STR$
[2334] CC53 54,48,45        TEXT 'THEN'
       CC56 4E
[2335] CC57 B0              BYTE THENZ             *  THEN
[2336] CC58 FF              BYTE >FF
[2337] CC59 42,52,45 CHAR5  TEXT 'BREAK'
       CC5C 41,4B
[2338] CC5E 8E              BYTE BREAKZ            *  BREAK
[2339] CC5F 43,4C,4F        TEXT 'CLOSE'
       CC62 53,45
[2340] CC64 A0              BYTE CLOSEZ            *  CLOSE
[2341] CC65 44,49,47        TEXT 'DIGIT'
       CC68 49,54
[2342] CC6A E9              BYTE DIGITZ            *  DIGIT
[2343] CC6B 45,52,41        TEXT 'ERASE'
       CC6E 53,45
[2344] CC70 EF              BYTE ERASEZ            *  ERASE
[2345] CC71 45,52,52        TEXT 'ERROR'
       CC74 4F,52
[2346] CC76 A5              BYTE ERRORZ            *  ERROR
[2347] CC77 46,49,58        TEXT 'FIXED'
       CC7A 45,44
[2348] CC7C FA              BYTE FIXEDZ            *  FIXED
[2349] CC7D 47,4F,53        TEXT 'GOSUB'
       CC80 55,42
[2350] CC82 87              BYTE GOSUBZ            *  GOSUB
[2351] CC83 49,4D,41        TEXT 'IMAGE'
       CC86 47,45
[2352] CC88 A3              BYTE IMAGEZ            *  IMAGE
[2353] CC89 49,4E,50        TEXT 'INPUT'
       CC8C 55,54
[2354] CC8E 92              BYTE INPUTZ            *  INPUT
[2355] CC8F 4D,45,52        TEXT 'MERGE'
       CC92 47,45
[2356] CC94 08              BYTE >08               *  MERGE

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0042 
EQUATES ALCS-359
[2357] CC95 50,52,49        TEXT 'PRINT'
       CC98 4E,54
[2358] CC9A 9C              BYTE PRINTZ            *  PRINT
[2359] CC9B 54,52,41        TEXT 'TRACE'
       CC9E 43,45
[2360] CCA0 90              BYTE TRACEZ            *  TRACE
[2361] CCA1 55,53,49        TEXT 'USING'
       CCA4 4E,47
[2362] CCA6 ED              BYTE USINGZ            *  USING
[2363] CCA7 FF              BYTE >FF
[2364] CCA8 41,43,43 CHAR6  TEXT 'ACCEPT'
       CCAB 45,50,54
[2365] CCAE A4              BYTE ACCEPZ            *  ACCEPT
[2366] CCAF 41,50,50        TEXT 'APPEND'
       CCB2 45,4E,44
[2367] CCB5 F9              BYTE APPENZ            *  APPEND
[2368] CCB6 44,45,4C        TEXT 'DELETE'
       CCB9 45,54,45
[2369] CCBC 99              BYTE DELETZ            *  DELETE
[2370] CCBD 4C,49,4E        TEXT 'LINPUT'
       CCC0 50,55,54
[2371] CCC3 AA              BYTE LINPUZ            *  LINPUT
[2372] CCC4 4E,55,4D        TEXT 'NUMBER'
       CCC7 42,45,52
[2373] CCCA 04              BYTE >04               *  NUMBER
[2374] CCCB 4F,50,54        TEXT 'OPTION'
       CCCE 49,4F,4E
[2375] CCD1 9E              BYTE OPTIOZ            *  OPTION
[2376] CCD2 4F,55,54        TEXT 'OUTPUT'
       CCD5 50,55,54
[2377] CCD8 F7              BYTE OUTPUZ            *  OUTPUT
[2378] CCD9 52,45,54        TEXT 'RETURN'
       CCDC 55,52,4E
[2379] CCDF 88              BYTE RETURZ            *  RETURN
[2380] CCE0 53,55,42        TEXT 'SUBEND'
       CCE3 45,4E,44
[2381] CCE6 A8              BYTE SUBNDZ            *  SUBEND
[2382] CCE7 55,41,4C        TEXT 'UALPHA'
       CCEA 50,48,41
[2383] CCED EA              BYTE UALPHZ            *  UALPHA
[2384] CCEE 55,50,44        TEXT 'UPDATE'
       CCF1 41,54,45
[2385] CCF4 F8              BYTE UPDATZ            *  UPDATE
[2386] CCF5 FF              BYTE >FF
[2387] CCF6 44,49,53 CHAR7  TEXT 'DISPLAY'
       CCF9 50,4C,41
       CCFC 59
[2388] CCFD A2              BYTE DISPLZ            *  DISPLAY
[2389] CCFE 4E,55,4D        TEXT 'NUMERIC'
       CD01 45,52,49
       CD04 43
[2390] CD05 E8              BYTE NUMERZ            *  NUMERIC
[2391] CD06 52,45,53        TEXT 'RESTORE'
       CD09 54,4F,52
       CD0C 45
[2392] CD0D 94              BYTE RESTOZ            *  RESTORE
[2393] CD0E 53,55,42        TEXT 'SUBEXIT'
       CD11 45,58,49
       CD14 54
[2394] CD15 A7              BYTE SUBXTZ            *  SUBEXIT
[2395] CD16 55,4E,42        TEXT 'UNBREAK'
       CD19 52,45,41
       CD1C 4B
[2396] CD1D 8F              BYTE UNBREZ            *  UNBREAK

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0043 
EQUATES ALCS-359
[2397] CD1E 55,4E,54        TEXT 'UNTRACE'
       CD21 52,41,43
       CD24 45
[2398] CD25 91              BYTE UNTRAZ            *  UNTRACE
[2399] CD26 57,41,52        TEXT 'WARNING'
       CD29 4E,49,4E
       CD2C 47
[2400] CD2D A6              BYTE WARNZ             *  WARNING
[2401] CD2E FF              BYTE >FF
[2402] CD2F 43,4F,4E CHAR8  TEXT 'CONTINUE'
       CD32 54,49,4E
       CD35 55,45
[2403] CD37 01              BYTE >01               *  CONTINUE
[2404] CD38 49,4E,54        TEXT 'INTERNAL'
       CD3B 45,52,4E
       CD3E 41,4C
[2405] CD40 F5              BYTE INTERZ            *  INTERNAL
[2406] CD41 52,45,4C        TEXT 'RELATIVE'
       CD44 41,54,49
       CD47 56,45
[2407] CD49 F4              BYTE RELATZ            *  RELATIVE
[2408] CD4A 56,41,4C        TEXT 'VALIDATE'
       CD4D 49,44,41
       CD50 54,45
[2409] CD52 FE              BYTE VALIDZ            *  VALIDATE
[2410] CD53 56,41,52        TEXT 'VARIABLE'
       CD56 49,41,42
       CD59 4C,45
[2411] CD5B F3              BYTE VARIAZ            *  VARIABLE
[2412] CD5C FF              BYTE >FF
[2413] CD5D 52,41,4E CHAR9  TEXT 'RANDOMIZE'
       CD60 44,4F,4D
       CD63 49,5A,45
[2414] CD66 95              BYTE RANDOZ            *  RANDOMIZE
[2415] CD67 FF              BYTE >FF
[2416] CD68 53,45,51 CHARA  TEXT 'SEQUENTIAL'
       CD6B 55,45,4E
       CD6E 54,49,41
       CD71 4C
[2417] CD72 F6              BYTE SEQUEZ            *  SEQUENTIAL
[2418] CD73 FF              BYTE >FF
[2419]               ***********************************************************
[2420]               * RXB PATCH CODE FILLER BYTE ******************************
[2421] CD74 00,00,00        BYTE >00,>00,>00
[2422]               * GROM ADDRESS >CD77 FOR ERRTAB
[2423]               ***********************************************************
[2424]               * ERRTAB - Error table containing all of the error messages
[2425]               *          error numbers and the severity code for each
[2426]               *          error. The error call number is the data byte
[2427]               *          that must follow the CALL ERRZZ or CALL WARNZZ.
[2428]               *          Messages with severity of zero are system
[2429]               *          messages and not error messages.
[2430]               *
[2431]               *  Message, Error #, Severity                     CALL #
[2432]               ***********************************************************
[2433] CD77 60,40    ERRTAB DATA MSGFST            * "READY"
[2434] CD79 00,00           BYTE 0,0
[2435] CD7B 60,48           DATA MSGBRK            * "BREAKPOINT"
[2436] CD7D 00,00           BYTE 0,0
[2437] CD7F 60,65           DATA MSG10             * "NUMERIC OVERFLOW"
[2438] CD81 0A,01           BYTE 10,1
[2439] CD83 60,76           DATA MSG14             * "SYNTAX ERROR"
[2440] CD85 0E,09           BYTE 14,9
[2441] CD87 60,83           DATA MSG16             * "ILLEGAL AFTER SUBPROGRAM"

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0044 
EQUATES ALCS-359
[2442] CD89 10,09           BYTE 16,9
[2443] CD8B 60,9C           DATA MSG17             * "UNMATCHED QUOTES"
[2444] CD8D 11,09           BYTE 17,9
[2445] CD8F 60,AD           DATA MSG19             * "NAME TOO LONG"
[2446] CD91 13,09           BYTE 19,9
[2447] CD93 60,BB           DATA MSG24             * "STRING-NUMBER MISMATCH"
[2448] CD95 18,09           BYTE 24,9
[2449] CD97 60,D2           DATA MSG25             * "OPTION BASE ERROR"
[2450] CD99 19,09           BYTE 25,9
[2451] CD9B 60,E4           DATA MSG28             * "IMPROPERLY USED NAME"
[2452] CD9D 1C,09           BYTE 28,9
[2453] CD9F 61,10           DATA MSG36             * "IMAGE ERROR"
[2454] CDA1 24,09           BYTE 36,9
[2455] CDA3 61,1C           DATA MSG39             * "MEMORY FULL"
[2456] CDA5 27,09           BYTE 39,9
[2457] CDA7 61,28           DATA MSG40             * "STACK OVERFLOW"
[2458] CDA9 28,09           BYTE 40,9
[2459] CDAB 61,37           DATA MSG43             * "NEXT WITHOUT FOR"
[2460] CDAD 2B,09           BYTE 43,9
[2461] CDAF 61,48           DATA MSG44             * "FOR-NEXT NESTING"
[2462] CDB1 2C,09           BYTE 44,9
[2463] CDB3 61,59           DATA MSG47             * "MUST BE IN SUBPROGRAM"
[2464] CDB5 2F,09           BYTE 47,9
[2465] CDB7 61,6F           DATA MSG48             * "RECURSIVE SUBPROGRAM CALL"
[2466] CDB9 30,09           BYTE 48,9
[2467] CDBB 61,89           DATA MSG49             * "MISSING SUBEND"
[2468] CDBD 31,09           BYTE 49,9
[2469] CDBF 61,98           DATA MSG51             * "RETURN WITHOUT GOSUB"
[2470] CDC1 33,09           BYTE 51,9
[2471] CDC3 61,AD           DATA MSG54             * "STRING TRUNCATED"
[2472] CDC5 36,01           BYTE 54,1
[2473] CDC7 61,BE           DATA MSG57             * "BAD SUBSCRIPT"
[2474] CDC9 39,09           BYTE 57,9
[2475] CDCB 63,24           DATA MSG56             * "SPEECH STRING TOO LONG"
[2476] CDCD 38,09           BYTE 56,9
[2477] CDCF 61,CC           DATA MSG60             * "LINE NOT FOUND"
[2478] CDD1 3C,09           BYTE 60,9
[2479] CDD3 61,DB           DATA MSG61             * "BAD LINE NUMBER"
[2480] CDD5 3D,09           BYTE 61,9
[2481] CDD7 62,C5           DATA MSG62             * "LINE TOO LONG"
[2482] CDD9 3E,09           BYTE 62,9
[2483] CDDB 61,EB           DATA MSG67             * "CAN'T CONTINUE"
[2484] CDDD 43,09           BYTE 67,9
[2485] CDDF 61,FA           DATA MSG69             * "COMMAND ILLEGAL IN PROGRAM
[2486] CDE1 45,09           BYTE 69,9
[2487] CDE3 62,15           DATA MSG70             * "ONLY LEGAL IN A PROGRAM"
[2488] CDE5 46,09           BYTE 70,9
[2489] CDE7 62,2D           DATA MSG74             * "BAD ARGUMENT"
[2490] CDE9 4A,09           BYTE 74,9
[2491] CDEB 62,3A           DATA MSG78             * "NO PROGRAM PRESENT"
[2492] CDED 4E,01           BYTE 78,1
[2493] CDEF 62,4D           DATA MSG79             * "BAD VALUE"
[2494] CDF1 4F,09           BYTE 79,9
[2495] CDF3 62,57           DATA MSG81             * "INCORRECT ARGUMENT LIST"
[2496] CDF5 51,09           BYTE 81,9
[2497] CDF7 62,6F           DATA MSG83             * "INPUT ERROR" (WARNING)
[2498] CDF9 53,01           BYTE 83,1
[2499] CDFB 62,7B           DATA MSG84             * "DATA ERROR"
[2500] CDFD 54,09           BYTE 84,9
[2501] CDFF 62,9B           DATA MSG109            * "FILE ERROR"
[2502] CE01 6D,09           BYTE 109,9
[2503] CE03 62,A6           DATA MSG130            * "I/O ERROR" (WARNING)
[2504] CE05 82,01           BYTE 130,1
[2505] CE07 62,A6           DATA MSG130            * "I/O ERROR"

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0045 
EQUATES ALCS-359
[2506] CE09 82,09           BYTE 130,9
[2507] CE0B 62,B0           DATA MSG135            * "SUBPROGRAM NOT FOUND"
[2508] CE0D 87,09           BYTE 135,9
[2509] CE0F 61,CC           DATA MSG60             * "LINE NOT FOUND" (WARNING)
[2510] CE11 3C,01           BYTE 60,1
[2511] CE13 62,86           DATA MSG97             * "PROTECTION VIOLATION"
[2512] CE15 61,09           BYTE 97,9
[2513] CE17 60,F9           DATA MSG34             * "UNRECOGNIZED CHARACTER"
[2514] CE19 14,09           BYTE 20,9
[2515]               * Following message is added 6/24/81 for the INPUT bug.
[2516] CE1B 62,6F           DATA MSG83             * "INPUT ERROR"
[2517] CE1D 53,09           BYTE 83,9
[2518]               ***********************************************************
[2519]               * TRACBK - Is used to trace back the error levels through
[2520]               *          nested function references and subprogram calls.
[2521]               *          It takes care of issuing the trace back info
[2522]               *          messages in these two cases. It leaves the stack
[2523]               *          unchanged except in the case of a prescan error
[2524]               *          occurring in an external subprogram. If any
[2525]               *          messages are issued, it returns with the staus
[2526]               *          set, else reset.
[2527]               ***********************************************************
[2528] CE1F BD,52,6E TRACBK DST  @VSPTR,@FAC8      Get a temp stack pointer
[2529] CE22 C5,52,24 GCE22  DCH  @STVSPT,@FAC8     While not end of stack
[2530] CE25 4E,48           BR   GCE48
[2531] CE27 D6,E0,02        CEQ  >68,V@2(@FAC8)    If UDF entry
       CE2A 52,68
[2532] CE2C 6E,49           BS   TRAC05
[2533] CE2E D6,E0,02        CEQ  >70,V@2(@FAC8)    If temp UDF entry
       CE31 52,70
[2534] CE33 4E,3B           BR   GCE3B
[2535] CE35 A7,6E,00        DSUB 8,@VSPTR          Trash it so DELINK won't
       CE38 08
[2536] CE39 4E,49           BR   TRAC05             mess up the symbol table
[2537] CE3B D6,E0,02 GCE3B  CEQ  >6A,V@2(@FAC8)    If subprogram
       CE3E 52,6A
[2538] CE40 6E,F8           BS   TRAC50
[2539] CE42 A7,52,00        DSUB 8,@FAC8           Goto next entry on stack
       CE45 08
[2540] CE46 4E,22           BR   GCE22
[2541] CE48 00       GCE48  RTN                    If no UDF or subprograms acti
[2542]               * Trace back UDF reference
[2543] CE49 86,56    TRAC05 CLR  @FAC12            To cheat on ERPRNT
[2544] CE4B C0,56,44        EX   @PRGFLG,@FAC12    Force line # NOT to be printe
[2545] CE4E D6,57,01        CEQ  1,@FAC13          If warning message
[2546] CE51 4E,58           BR   GCE58
[2547]               * Place for the message already set in WRNZZ3
[2548] CE53 06,6E,1B        CALL ERPNT5            Don't restore char set
[2549] CE56 4E,5B           BR   GCE5B
[2550] CE58 06,6E,0E GCE58  CALL ERPRNT            Print the real error messgae
[2551] CE5B BC,44,56 GCE5B  ST   @FAC12,@PRGFLG    Restore program/imperative fl
[2552] CE5E BD,5C,2C        DST  @PGMPTR,@ARG      Get the place of error for FN
[2553] CE61 06,CF,73        CALL FNDLNE            Find the line that the error
[2554]               *                              is in
[2555] CE64 BF,A2,E4        DST  >A9AE,V@NLNADD+2  Say 'in' xx
       CE67 A9,AE
[2556] CE69 BF,20,02        DST  NLNADD+5,@VARW    Start place of line number
       CE6C E7
[2557] CE6D 06,6F,BA        CALL DISO              Put out the line number
[2558] CE70 0F,83           XML  SCROLL
[2559] CE72 BD,5C,B0 TRAC09 DST  V*FAC8,@ARG       Save PGMPTR from the entry
       CE75 52
[2560] CE76 A7,52,00 TRAC10 DSUB 8,@FAC8           Go on to next entry
       CE79 08

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0046 
EQUATES ALCS-359
[2561] CE7A C5,52,24        DCH  @STVSPT,@FAC8     If not end of stack
[2562] CE7D 4E,E2           BR   GCEE2
[2563] CE7F D6,E0,02        CEQ  >68,V@2(@FAC8)    If function entry
       CE82 52,68
[2564] CE84 4E,C8           BR   GCEC8
[2565] CE86 D5,B0,52        DCEQ @ARG,V*FAC8       If recursive
       CE89 5C
[2566] CE8A 4E,B3           BR   GCEB3
[2567] CE8C 31,00,0F        MOVE 15,G@MSGCIS,V@NLNADD+2
       CE8F A2,E4,63
       CE92 0A
[2568] CE93 0F,83           XML  SCROLL            * CALLS ITSELF
[2569] CE95 A7,52,00 TRAC12 DSUB 8,@FAC8           Goto next entry on stack
       CE98 08
[2570] CE99 D6,E0,02 GCE99  CEQ  >68,V@2(@FAC8)    While functions
       CE9C 52,68
[2571] CE9E 4E,AC           BR   GCEAC
[2572] CEA0 D5,B0,52        DCEQ @ARG,V*FAC8
       CEA3 5C
[2573] CEA4 4E,72           BR   TRAC09
[2574] CEA6 A7,52,00        DSUB 8,@FAC8           Goto next entry on stack
       CEA9 08
[2575] CEAA 4E,99           BR   GCE99
[2576] CEAC CE,E0,02 GCEAC  CGT  >65,V@2(@FAC8)    If string is numeric
       CEAF 52,65
[2577] CEB1 4E,95           BR   TRAC12
[2578] CEB3 31,00,0B GCEB3  MOVE 11,G@MSGCF,V@NLNADD+2
       CEB6 A2,E4,63
       CEB9 19
[2579] CEBA 06,CF,73        CALL FNDLNE            Find the line
[2580] CEBD BF,20,02        DST  NLNADD+14,@VARW   Place to display it
       CEC0 F0
[2581] CEC1 06,6F,BA        CALL DISO              Display the line number
[2582] CEC4 0F,83           XML  SCROLL            * CALLED FROM
[2583] CEC6 4E,72           BR   TRAC09            Go on
[2584]               * Jump always
[2585] CEC8 CA,E0,02 GCEC8  CHE  >66,V@2(@FAC8)    If not permanent
       CECB 52,66
[2586] CECD 4E,76           BR   TRAC10
[2587] CECF C7,52,09 GCECF  DCH  VRAMVS,@FAC8      While still not at bottom
       CED2 58
[2588] CED3 4E,E2           BR   GCEE2
[2589] CED5 D6,E0,02        CEQ  >6A,V@2(@FAC8)    If subprogram
       CED8 52,6A
[2590] CEDA 6F,09           BS   TRAC51
[2591] CEDC A7,52,00        DSUB 8,@FAC8           Go down an entry
       CEDF 08
[2592] CEE0 4E,CF           BR   GCECF
[2593] CEE2 8E,44    GCEE2  CZ   @PRGFLG           If not imperative
[2594] CEE4 6E,F6           BS   GCEF6
[2595] CEE6 31,00,0B        MOVE 11,G@MSGCF,V@NLNADD+2
       CEE9 A2,E4,63
       CEEC 19
[2596] CEED BF,20,02        DST  NLNADD+14,@VARW   Place to display line #
       CEF0 F0
[2597] CEF1 06,A0,0A        CALL ASC               Display it
[2598] CEF4 0F,83           XML  SCROLL
[2599] CEF6 4F,65    GCEF6  BR   RTNSET            Return with condition set
[2600]               * Trace back subprogram calls
[2601] CEF8 D6,57,01 TRAC50 CEQ  1,@FAC13          If warning message only
[2602] CEFB 4F,02           BR   GCF02
[2603] CEFD 06,6E,1B        CALL ERPNT5            Don't restore char set
[2604] CF00 4F,05           BR   GCF05
[2605] CF02 06,6E,0E GCF02  CALL ERPRNT            Print the real message

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0047 
EQUATES ALCS-359
[2606] CF05 8E,44    GCF05  CZ   @PRGFLG
[2607] CF07 6F,65           BS   RTNSET
[2608] CF09 8E,44    TRAC51 CZ   @PRGFLG
[2609] CF0B 6F,68           BS   RETNOS
[2610] CF0D BF,A2,E4        DST  >A9AE,V@NLNADD+2  Display 'IN'
       CF10 A9,AE
[2611] CF12 BF,56,02        DST  NLNADD+6,@FAC12   Display location of name
       CF15 E8
[2612] CF16 BD,5A,B0 TRAC55 DST  V*FAC8,@FAC16     Get S.T. pointer
       CF19 52
[2613] CF1A 86,54           CLR  @FAC10            Need a double length
[2614] CF1C BC,55,E0        ST   V@1(@FAC16),@FAC10+1 Get the name length
       CF1F 01,5A
[2615] CF21 BD,5A,E0        DST  V@4(@FAC16),@FAC16   Get the name pointer
       CF24 04,5A
[2616] CF26 34,54,B0        MOVE @FAC10,V*FAC16,V*FAC12   Display
       CF29 56,B0,5A
[2617] CF2C A2,B0,56 GCF2C  ADD  OFFSET,V*FAC12
       CF2F 60
[2618] CF30 91,56           DINC @FAC12
[2619] CF32 93,54           DDEC @FAC10
[2620] CF34 8F,54           DCZ  @FAC10
[2621] CF36 4F,2C           BR   GCF2C
[2622] CF38 0F,83           XML  SCROLL            Scroll the screen 'CALLED FRO
[2623] CF3A 31,00,0B        MOVE 11,G@MSGCF,V@NLNADD+2
       CF3D A2,E4,63
       CF40 19
[2624] CF41 BD,54,52        DST  @FAC8,@FAC10      In case at top level
[2625] CF44 BD,52,E0        DST  V@6(@FAC8),@FAC8  Get LSUBP off stack
       CF47 06,52
[2626] CF49 8F,52           DCZ  @FAC8             If not top level call
[2627] CF4B 6F,53           BS   GCF53
[2628] CF4D BF,56,02        DST  NLNADD+15,@FAC12  Display location of name
       CF50 F1
[2629] CF51 4F,16           BR   TRAC55
[2630]               * Now find original number
[2631] CF53 BD,5E,EF GCF53  DST  V@-6(@FAC10),@ARG2 Get pointer to line number
       CF56 FF,FA,54
[2632] CF59 06,CF,69        CALL GETLN2            Get the actual line number
[2633] CF5C BF,20,02        DST  NLNADD+15,@VARW   Place to put line number
       CF5F F1
[2634] CF60 06,6F,BA        CALL DISO              Display the line number
[2635] CF63 0F,83           XML  SCROLL            Scroll the mess up
[2636]               * RETURN WITH CONDITION BIT SET
[2637] CF65 D4,00,00 RTNSET CEQ  @>8300,@>8300     SET CONDITION BIT
[2638] CF68 01       RETNOS RTNC
[2639] CF69 97,5E    GETLN2 DDECT @ARG2
[2640] CF6B 06,80,2C        CALL GRSUB2            Read 2 bytes of data from ERA
[2641] CF6E 5E              BYTE >5E             * (use GREAD1) or VDP   (>5E=AR
[2642] CF6F BD,5E,58        DST  @EEE1,@ARG2       Put the result into @ARG2
[2643] CF72 00              RTN
[2644]               * Given a specific PGMPTR (in ARG) find the line number of
[2645]               * the line it points into and put the actual line number
[2646]               * in ARG2
[2647] CF73 BD,60,30 FNDLNE DST  @STLN,@ARG4       Get pointer into # buffer
[2648] CF76 95,60           DINCT @ARG4            Point at the line pointer
[2649] CF78 BD,5E,60        DST  @ARG4,@ARG2       Get line pointer
[2650] CF7B 87,62           DCLR @ARG6             Start with a zero value
[2651] CF7D C9,60,32 GCF7D  DCHE @ENLN,@ARG4       While in line buffer
[2652] CF80 6F,9C           BS   GCF9C
[2653] CF82 06,80,2C        CALL GRSUB2            Get the line # from ERAM/VDP
[2654] CF85 60              BYTE >60             * @ARG4: Source address on ERAM
[2655] CF86 CD,58,5C        DCGT @ARG,@EEE1
[2656] CF89 6F,96           BS   GCF96

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0048 
EQUATES ALCS-359
[2657] CF8B C5,58,62        DCH  @ARG6,@EEE1       If closer
[2658] CF8E 4F,96           BR   GCF96
[2659] CF90 BD,5E,60        DST  @ARG4,@ARG2       Make it the one
[2660] CF93 BD,62,58        DST  @EEE1,@ARG6
[2661] CF96 A3,60,00 GCF96  DADD 4,@ARG4           Goto next line in buffer
       CF99 04
[2662] CF9A 4F,7D           BR   GCF7D
[2663] CF9C 06,CF,69 GCF9C  CALL GETLN2            Get the line number
[2664] CF9F B2,5E,7F        AND  >7F,@ARG2         Reset the breakpoint if any
[2665] CFA2 00              RTN
[2666]               ***********************************************************
[2667] CFA3 C3,81,00 SPCCHR BYTE >C3,>81,>00,>00,>00,>00,>81,>C3 * DEFINE CURSOR
       CFA6 00,00,00
       CFA9 81,C3
[2668]               ***********************************************************
[2669]               * EDTZZ0 EQU >D000
[2670]                      AORG >1000
[2671]               ***********************************************************
[2672]               * EDIT routine - display requested line and edit any change
[2673]               *                in the program segment.
[2674]               *
[2675]               * FAC contains the line number just read in
[2676] D000 D5,30,32 EDTZZ0 DCEQ @ENLN,@STLN       If no program
[2677] D003 50,08           BR   GD008
[2678] D005 05,64,EF        B    ILLST
[2679] D008 0F,7E    GD008  XML  SPEED
[2680] D00A 03              BYTE SEETWO          * Try to find the line (# in FA
[2681] D00B 50,AC           BR   EDTZ08            * LINE NOT FOUND
[2682] D00D BE,06,1D EDTZ00 ST   29,@CCPPTR        Force new record on first lin
[2683]               * The entry in the line number table is in EXTRAM
[2684] D010 BE,17,60        ST   OFFSET,@DSRFLG    Set screen output mode
[2685] D013 BE,07,1C        ST   28,@RECLEN        Select standard record length
[2686] D016 87,04           DCLR @PABPTR           I/O to the screen
[2687] D018 8E,80,84        CZ   @RAMTOP           If ERAM
[2688] D01B 70,20           BS   GD020
[2689] D01D 06,80,2A        CALL GRMLST            Prepare to list from ERAM
[2690] D020 06,6A,74 GD020  CALL LLIST             List the line
[2691]               * VARW contains the position of the first character followi
[2692]               *      the line number.
[2693] D023 C4,06,07        CH   @RECLEN,@CCPPTR   Exactly at end of line
[2694] D026 50,32           BR   GD032
[2695] D028 0F,83           XML  SCROLL            Scroll up one line
[2696] D02A A7,20,00        DSUB 32,@VARW          And correct both VARW
       D02D 20
[2697] D02E A7,08,00        DSUB 28,@CCPADR          and CCPADR
       D031 1C
[2698] D032 BD,5E,20 GD032  DST  @VARW,@ARG2       Set cursor at start position
[2699] D035 B2,5F,E0        AND  >E0,@ARG3         Back to beginning of line
[2700] D038 A3,5E,00        DADD 157,@ARG2         Compute theoretically highest
       D03B 9D
[2701] D03C BD,2A,08        DST  @CCPADR,@VARA     Use current high position
[2702]               *                              as high
[2703] D03F C9,5E,2A        DCHE @VARA,@ARG2       If > 4 then lines-correct
[2704] D042 70,48           BS   GD048
[2705] D044 BF,5E,03        DST  >031D,@ARG2       Allow for one more line
       D047 1D
[2706]               *----------------------------------------------------------
[2707]               * Fix "You cannot add characters to a line whose number is
[2708]               *      multiple of 256, if that line was reached ty typing
[2709]               *      either an up arrow or a down arrow from a previous
[2710]               *      line" bug, the following line is changed
[2711]               *      CALL READL1            Allow user to make change
[2712] D048 06,6A,8A GD048  CALL READL3            Allow user to make change
[2713]               *----------------------------------------------------------

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0049 
EQUATES ALCS-359
[2714] D04B 06,D0,AF        CALL SAVLIN            Save the line for recall
[2715] D04E 8E,80,84        CZ   @RAMTOP           If ERAM exists
[2716] D051 70,56           BS   GD056
[2717] D053 BD,2E,58        DST  @FAC14,@EXTRAM     saves EXTRAM in FAC
[2718] D056 DA,45,01 GD056  CLOG 1,@FLAG           Autonumber
[2719] D059 50,79           BR   EDTZ01
[2720] D05B D6,75,0B        CEQ  UPARR,@RKEY       Ended in UP arrow
[2721] D05E 50,6B           BR   GD06B
[2722] D060 A3,2E,00        DADD 4,@EXTRAM         Point at next line to list
       D063 04
[2723] D064 C5,2E,32        DCH  @ENLN,@EXTRAM     Doesn't exist
[2724] D067 70,79           BS   EDTZ01
[2725] D069 50,7E           BR   EDTZ02
[2726] D06B D6,75,0A GD06B  CEQ  DWNARR,@RKEY      Want next program line
[2727] D06E 50,85           BR   GD085
[2728] D070 A7,2E,00        DSUB 4,@EXTRAM         Point at next line to list
       D073 04
[2729] D074 C9,2E,30        DCHE @STLN,@EXTRAM     Passed high program
[2730] D077 70,7E           BS   EDTZ02
[2731] D079 BE,75,0D EDTZ01 ST   CHRTN,@RKEY       Set no more editing
[2732] D07C 50,85           BR   GD085
[2733] D07E 06,80,2E EDTZ02 CALL GRSUB3            Read from  ERAM, use GREAD
[2734]               *                              or VDP, Reset possible
[2735]               *                              breakpoint too
[2736] D081 2E              BYTE >2E             * @EXTRAM: Source address on ER
[2737] D082 BD,62,58        DST  @EEE1,@ARG6       Save for general use
[2738] D085 8E,60    GD085  CZ   @ARG4             If current, the line was chan
[2739] D087 50,A1           BR   GD0A1
[2740] D089 BF,0A,08        DST  CRNBUF,@RAMPTR    Initialize crunch pointer
       D08C 20
[2741] D08D 0F,7F           XML  CRUNCH            Crunch the input line
[2742] D08F 00              BYTE 0               * Normal crunch mode
[2743] D090 8F,22           DCZ  @ERRCOD           If error
[2744] D092 70,97           BS   GD097
[2745] D094 05,64,33        B    TOPL42
[2746]               *----------------------------------------------------------
[2747]               * Fix "Illegal line number 0 can be created by editting a
[2748]               *      line" bug, 5/23/81
[2749]               *  Add the following line, and the label TOPL55 at line
[2750]               *   (TOPL45+9)
[2751] D097 8F,4A    GD097  DCZ  @FAC              If line number has
[2752] D099 50,9E           BR   GD09E              been deleted - treated as
[2753] D09B 05,64,62        B    TOPL55              imperative state
[2754]               *----------------------------------------------------------
[2755] D09E 06,66,CF GD09E  CALL EDITLN            And edit into program buffer
[2756] D0A1 BD,4A,62 GD0A1  DST  @ARG6,@FAC        Line number for next line
[2757] D0A4 D6,75,0D        CEQ  CHRTN,@RKEY       Stop on carriage return
[2758] D0A7 50,08           BR   GD008
[2759] D0A9 05,63,DD        B    TOPL15            Don't kill the symbol table
[2760]               * JUMP ALWAYS
[2761] 698C          G698C  EQU  >698C
[2762] D0AC 05,69,8C EDTZ08 B    G698C             LINE NOT FOUND
[2763]               * Save input line for edit recall
[2764] D0AF B2,21,E0 SAVLIN AND  >E0,@VARW+1       Correct in case autonumber
[2765] D0B2 94,21           INCT @VARW+1           Skip edge characters
[2766] D0B4 BD,4A,2A        DST  @VARA,@FAC        Get pointer to end of line
[2767] D0B7 A5,4A,20        DSUB @VARW,@FAC        Compute length of line
[2768] D0BA 70,CC           BS   SAVLN5            If zero, length line
[2769] D0BC C7,4A,00        DCH  160,@FAC          If line longer then buffer
       D0BF A0
[2770] D0C0 50,C6           BR   GD0C6
[2771] D0C2 BF,4A,00        DST  160,@FAC          Default to max buffer size
       D0C5 A0
[2772]               * RXB PATCH CODE FIX USER / REDO KEY **********************

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0050 
EQUATES ALCS-359
[2773]               * GD0C6  MOVE @FAC,V*VARW,V@RECBUF  Save line
[2774] D0C6 05,D1,00 GD0C6  B    USERFG            Check for USER FLAG
[2775]              
[2776]                      AORG >10CC 
[2777] D0CC BD,A3,8C SAVLN5 DST  @VARW,V@BUFSRT    Save pointer to line start
       D0CF 20
[2778] D0D0 BD,A3,8E        DST  @VARA,V@BUFEND    Save pointer to line end
       D0D3 2A
[2779] D0D4 CB,A3,8C GD0D4  DCHE >0262,V@BUFSRT    If try more than 160
       D0D7 02,62
[2780] D0D9 70,E7           BS   GD0E7
[2781]               *----------------------------------------------------------
[2782]               * Fix bug "Delete characters while in REDO mode, next REDO
[2783]               *          still may show those deleted characters, 5/26/81
[2784]               *   Replace following line
[2785]               *      DST  >02FE,V@BUFEND    Update pointer to line end
[2786] D0DB A3,A3,8E        DADD 32,V@BUFEND       Shift the whole buffer 32
       D0DE 00,20
[2787]               *                              down at a time
[2788]               *----------------------------------------------------------
[2789] D0E0 A3,A3,8C        DADD 32,V@BUFSRT       Update pointer for 160 chars
       D0E3 00,20
[2790] D0E5 50,D4           BR   GD0D4
[2791]               *----------------------------------------------------------
[2792]               * Also add following 3 lines for the bug above
[2793] D0E7 C7,A3,8E GD0E7  DCH  >02FE,V@BUFEND    Update pointer to line end
       D0EA 02,FE
[2794] D0EC 50,F3           BR   GD0F3
[2795] D0EE BF,A3,8E        DST  >02FE,V@BUFEND
       D0F1 02,FE
[2796]               *----------------------------------------------------------
[2797] D0F3 00       GD0F3  RTN
[2798]               ***********************************************************
[2799]               * RXB
[2800]               ***********************************************************
[2801]                      AORG >10F4                                         *
[2802]               * AMS BRANCH TABLE FOR AMS ROUTINES  *    FIXED           *
[2803] D0F4 51,B3           BR   AMSMAP                   *     AT             *
[2804] D0F6 51,CE           BR   AMSPAS                   *    >D0F4           *
[2805] D0F8 51,E8           BR   AMSOFF                   *  PERMANENTLY       *
[2806] D0FA 52,01           BR   AMSON                    *   ADD TO THE       *
[2807] D0FC 52,2B           BR   SISRON                   *    TABLE IF        *
[2808] D0FE 52,58           BR   SISROF                   *    NEEDED.         *
[2809]               ***********************************************************
[2810] D100 8E,A3,BB USERFG CZ   V@CONFLG         USER FLAG set?
[2811] D103 71,0E           BS   NOUSR            Yes, skip ahead
[2812] D105 D7,A8,C2        DCEQ >0900,V@>08C2    USER PAB there?
       D108 09,00
[2813] D10A 70,F3           BS   GD0F3            Yes, flag set
[2814] D10C 50,CC           BR   SAVLN5
[2815] D10E 34,4A,A8 NOUSR  MOVE @FAC,V*VARW,V@RECBUF Save line
       D111 C0,B0,20
[2816] D114 50,CC           BR   SAVLN5           Continue       
[2817]               ***********************************************************
[2818]               * CALL POKER(vdpr#,value)
[2819] D116 D1,7F    POKER  DATA BEEP
[2820] D118 05,50,4F        STRI 'POKER'           
       D11B 4B,45,52
[2821] D11E D1,20           DATA $+2
[2822] D120 06,CA,32        CALL GLPARZ
[2823] D123 06,CA,58 POKAGN CALL GETNUM
[2824] D126 CB,4A,00        DCHE 8,@FAC
       D129 08
[2825] D12A 65,A2           BS   ERRBV

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0051 
EQUATES ALCS-359
[2826] D12C BC,00,4B        ST   @FAC1,@VAR0
[2827] D12F 06,CA,88        CALL SUBLP3
[2828] D132 8A,00           CASE @VAR0
[2829] D134 51,73           BR   PREG0
[2830] D136 51,6C           BR   PREG1
[2831] D138 51,65           BR   PREG2
[2832] D13A 51,5E           BR   PREG3
[2833] D13C 51,57           BR   PREG4
[2834] D13E 51,50           BR   PREG5
[2835] D140 51,49           BR   PREG6
[2836] D142 3D,00,01        MOVE 1,@FAC1,#7
       D145 07,4B
[2837] D147 51,78           BR   POKEND
[2838] D149 3D,00,01 PREG6  MOVE 1,@FAC1,#6
       D14C 06,4B
[2839] D14E 51,78           BR   POKEND
[2840] D150 3D,00,01 PREG5  MOVE 1,@FAC1,#5
       D153 05,4B
[2841] D155 51,78           BR   POKEND
[2842] D157 3D,00,01 PREG4  MOVE 1,@FAC1,#4
       D15A 04,4B
[2843] D15C 51,78           BR   POKEND
[2844] D15E 3D,00,01 PREG3  MOVE 1,@FAC1,#3
       D161 03,4B
[2845] D163 51,78           BR   POKEND
[2846] D165 3D,00,01 PREG2  MOVE 1,@FAC1,#2
       D168 02,4B
[2847] D16A 51,78           BR   POKEND
[2848] D16C 3D,00,01 PREG1  MOVE 1,@FAC1,#1
       D16F 01,4B
[2849] D171 51,78           BR   POKEND
[2850] D173 3D,00,01 PREG0  MOVE 1,@FAC1,#0
       D176 00,4B
[2851] D178 D6,42,B3 POKEND CEQ  COMMAZ,@CHAT
[2852] D17B 71,23           BS   POKAGN
[2853] D17D 43,16           BR   PEEK5
[2854]               ******************************
[2855]               * CALL BEEP
[2856] D17F D1,8D    BEEP   DATA HONK
[2857] D181 04,42,45        STRI 'BEEP'            
       D184 45,50
[2858] D186 D1,88           DATA $+2
[2859] D188 06,00,34        CALL ACCTON
[2860] D18B 41,E3           BR   LDRET2
[2861]               * CALL HONK
[2862] D18D D1,9B    HONK   DATA DIRECT
[2863] D18F 04,48,4F        STRI 'HONK'            
       D192 4E,4B
[2864] D194 D1,96           DATA $+2
[2865] D196 06,00,36        CALL BADTON
[2866] D199 41,E3           BR   LDRET2
[2867]               ******************************
[2868]               * CALL DIR(pathname)
[2869] D19B D1,A3    DIRECT DATA AMAP
[2870] D19D 03,44,49        STRI 'DIR'             
       D1A0 52
[2871] D1A1 C6,CC           DATA GKCAT
[2872]               ******************************
[2873]               * CALL AMSMAP
[2874] D1A3 D1,BD    AMAP   DATA APASS
[2875] D1A5 06,41,4D        STRI 'AMSMAP'         
       D1A8 53,4D,41
       D1AB 50
[2876] D1AC D1,AE           DATA $+2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0052 
EQUATES ALCS-359
[2877] D1AE 06,D1,B3        CALL AMSMAP
[2878] D1B1 41,E3           BR   LDRET2
[2879] D1B3 06,D2,0B AMSMAP CALL AMSSUB
[2880] D1B6 BF,14,1D        DST  >1D01,@STORE
       D1B9 01
[2881] D1BA 0F,F0           XML  >F0
[2882] D1BC 00              RTN
[2883]               * CALL AMSPASS
[2884] D1BD D1,D8    APASS  DATA ARWOFF
[2885] D1BF 07,41,4D        STRI 'AMSPASS'         
       D1C2 53,50,41
       D1C5 53,53
[2886] D1C7 D1,C9           DATA $+2
[2887] D1C9 06,D1,CE        CALL AMSPAS
[2888] D1CC 41,E3           BR   LDRET2
[2889] D1CE 06,D2,0B AMSPAS CALL AMSSUB
[2890] D1D1 BF,14,1E        DST  >1E01,@STORE
       D1D4 01
[2891] D1D5 0F,F0           XML  >F0
[2892] D1D7 00              RTN
[2893]               * CALL AMSOFF
[2894] D1D8 D1,F2    ARWOFF DATA ARWON
[2895] D1DA 06,41,4D        STRI 'AMSOFF'          
       D1DD 53,4F,46
       D1E0 46
[2896] D1E1 D1,E3           DATA $+2
[2897] D1E3 06,D1,E8        CALL AMSOFF
[2898] D1E6 41,E3           BR   LDRET2
[2899] D1E8 06,D2,0B AMSOFF CALL AMSSUB
[2900] D1EB BF,14,1E        DST  >1E00,@STORE
       D1EE 00
[2901] D1EF 0F,F0           XML  >F0
[2902] D1F1 00              RTN
[2903]               * CALL AMSON
[2904] D1F2 D2,12    ARWON  DATA ISRON
[2905] D1F4 05,41,4D        STRI 'AMSON'              
       D1F7 53,4F,4E
[2906] D1FA D1,FC           DATA $+2
[2907] D1FC 06,D2,01        CALL AMSON
[2908] D1FF 41,E3           BR   LDRET2
[2909] D201 06,D2,0B AMSON  CALL AMSSUB
[2910] D204 BF,14,1D        DST  >1D00,@STORE
       D207 00
[2911] D208 0F,F0           XML  >F0
[2912] D20A 00              RTN
[2913] D20B 31,00,18 AMSSUB MOVE 24,G@AMSCRU,@>8300
       D20E 00,CA,8F
[2914] D211 00              RTN
[2915]              
[2916]               * CALL ISRON(variable)
[2917] D212 D2,34    ISRON  DATA ISROFF
[2918] D214 05,49,53        STRI 'ISRON'           
       D217 52,4F,4E
[2919] D21A D2,1C           DATA $+2
[2920] D21C 06,CA,32        CALL GLPARZ
[2921] D21F 06,CA,88        CALL SUBLP3
[2922] D222 8F,4A           DCZ  @FAC
[2923] D224 65,A2           BS   ERRBV
[2924] D226 06,D2,2B        CALL SISRON
[2925] D229 43,16           BR   PEEK5
[2926] D22B 31,00,0E SISRON MOVE 14,G@GISRON,@>8300
       D22E 00,CA,A7
[2927] D231 0F,F0           XML  >F0
[2928] D233 00              RTN

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0053 
EQUATES ALCS-359
[2929]               ******************************************************
[2930]               * CALL ISROFF(variable)
[2931] D234 D2,67    ISROFF DATA ABANK
[2932] D236 06,49,53        STRI 'ISROFF'          
       D239 52,4F,46
       D23C 46
[2933] D23D D2,3F           DATA $+2
[2934] D23F 06,CA,32        CALL GLPARZ
[2935] D242 06,D2,58        CALL SISROF
[2936] D245 0F,79           XML  PGMCHR
[2937] D247 BD,00,4A        DST  @FAC,@VAR0
[2938] D24A 06,CA,7C        CALL SNDER
[2939] D24D 06,C4,2C        CALL CLRFAC
[2940] D250 BD,4A,00        DST  @VAR0,@FAC
[2941] D253 06,CA,83        CALL CIFSND
[2942] D256 43,16           BR   PEEK5
[2943] D258 BD,4E,18 SISROF DST  @>8318,@FAC4
[2944] D25B 31,00,1A        MOVE 26,G@GISROF,@>8300
       D25E 00,CA,B5
[2945] D261 0F,F0           XML  >F0
[2946] D263 BD,18,4E        DST  @FAC4,@>8318
[2947] D266 00              RTN
[2948]               *****************************************************
[2949]               * CALL AMSBANK(lowbank#,highbank#)
[2950] D267 D3,2F    ABANK  DATA AINIT
[2951] D269 07,41,4D        STRI 'AMSBANK'         
       D26C 53,42,41
       D26F 4E,4B
[2952] D271 D2,73           DATA $+2
[2953] D273 06,CA,32        CALL GLPARZ            * ( ?
[2954] D276 06,CA,58        CALL GETNUM            * Get low page.
[2955] D279 CB,4A,00        DCHE 240,@FAC          * Too high?
       D27C F0
[2956] D27D 65,A2           BS   ERRBV             * ERROR BAD VALUE.
[2957] D27F A2,4B,10        ADD  16,@FAC1          * Add 16 to it.
[2958] D282 0F,77           XML  VPUSH             * Save low page.
[2959] D284 06,CA,88        CALL SUBLP3            * Get high page.
[2960] D287 CB,4A,00        DCHE 240,@FAC          * Too high?
       D28A F0
[2961] D28B 65,A2           BS   ERRBV             * ERROR BAD VALUE.
[2962] D28D A2,4B,10        ADD  16,@FAC1          * Add 16 to it.
[2963] D290 BC,5D,4B        ST   @FAC1,@ARG1       * Save high page.
[2964] D293 06,D1,B3        CALL AMSMAP            * AMSMAP
[2965] D296 06,D2,01        CALL AMSON             * AMSON
[2966] D299 0F,78           XML  VPOP              * Fetch low page.
[2967] D29B BC,5C,4B        ST   @FAC1,@ARG        * Save low page.
[2968] D29E BC,4A,8F        ST   @>4004,@FAC       * Save old page.
       D2A1 BD,04
[2969] D2A3 BC,4B,8F        ST   @>4006,@FAC1      * Save old page 2.
       D2A6 BD,06
[2970] D2A8 BC,8F,BD        ST   @ARG,@>4004       * Load new low page.
       D2AB 04,5C
[2971] D2AD BD,50,8F        DST  @>2000,@FAC6      * Save new low first bytes.
       D2B0 9D,00
[2972] D2B2 BC,8F,BD        ST   @ARG,@>4006       * Duplicate new low page.
       D2B5 06,5C
[2973] D2B7 BF,8F,9D        DST  >5555,@>2000      * Write test bytes.
       D2BA 00,55,55
[2974] D2BD D7,8F,AD        DCEQ >5555,@>3000      * Did it write?
       D2C0 00,55,55
[2975] D2C3 52,FB           BR   AMSERR            * No, ERROR.
[2976] D2C5 BD,8F,9D        DST  @FAC6,@>2000      * Restore new low bytes.
       D2C8 00,50
[2977] D2CA BC,8F,BD        ST   @ARG1,@>4004      * Load new high page.

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0054 
EQUATES ALCS-359
       D2CD 04,5D
[2978] D2CF BD,50,8F        DST  @>2000,@FAC6      * Save new high first bytes.
       D2D2 9D,00
[2979] D2D4 BC,8F,BD        ST   @ARG1,@>4006      * Duplicate new high page.
       D2D7 06,5D
[2980] D2D9 BF,8F,9D        DST  >9999,@>2000      * Write test bytes.
       D2DC 00,99,99
[2981] D2DF D7,8F,AD        DCEQ >9999,@>3000      * Did it write?
       D2E2 00,99,99
[2982] D2E5 52,FB           BR   AMSERR            * No, ERROR.
[2983] D2E7 BD,8F,9D        DST  @FAC6,@>2000      * Restore new high bytes.
       D2EA 00,50
[2984] D2EC BC,8F,BD        ST   @ARG,@>4004       * Load new low page.
       D2EF 04,5C
[2985] D2F1 BC,8F,BD        ST   @ARG1,@>4006      * Load new high page.
       D2F4 06,5D
[2986] D2F6 06,D1,E8        CALL AMSOFF            * AMSOFF
[2987] D2F9 43,16           BR   PEEK5
[2988]               *******************************
[2989] D2FB BC,8F,BD AMSERR ST   @FAC,@>4004       * Restore old page.
       D2FE 04,4A
[2990] D300 BC,8F,BD        ST   @FAC1,@>4006      * Restore old page 2.
       D303 06,4B
[2991] D305 06,D1,E8        CALL AMSOFF            * AMSOFF
[2992] D308 0F,83           XML  SCROLL
[2993] D30A 08              FMT
[2994] D30B FC,60           SCRO >60
[2995] D30D FE,17           ROW  23
[2996] D30F FF,02           COL  2
[2997] D311 19,2A,20        HTEX '* WARNING AMS BANK ERROR *'
       D314 57,41,52
       D317 4E,49,4E
       D31A 47,20,41
       D31D 4D,53,20
       D320 42,41,4E
       D323 4B,20,45
       D326 52,52,4F
       D329 52,20,2A
[2998] D32C FB              FEND
[2999] D32D 45,A2           BR   ERRBV
[3000]               *******************************
[3001]               * CALL AMSINIT
[3002] D32F D3,5B    AINIT  DATA CHRALL
[3003] D331 07,41,4D        STRI 'AMSINIT'         
       D334 53,49,4E
       D337 49,54
[3004] D339 D3,3B           DATA $+2
[3005] D33B 06,D2,01        CALL AMSON
[3006] D33E BF,4A,5F        DST  >5FFE,@FAC        Start SAMS Register
       D341 FE
[3007] D342 BE,4C,0F        ST   >0F,@FAC2         Value to load
[3008] D345 35,00,01 AINITL MOVE 1,@FAC2,@0(@FAC)  Load value in Register
       D348 CF,7D,00
       D34B 4A,4C
[3009] D34D 97,4A           DDECT @FAC             Register address-2
[3010] D34F 92,4C           DEC  @FAC2             Value-1
[3011] D351 53,45           BR   AINITL            No, loop
[3012] D353 06,D1,E8        CALL AMSOFF
[3013] D356 06,D1,B3        CALL AMSMAP
[3014] D359 41,E3           BR   LDRET2            Return to XB
[3015]               *******************************
[3016]               * CALL CHARSETALL
[3017] D35B D3,AD    CHRALL DATA USER
[3018] D35D 0A,43,48        STRI 'CHARSETALL'      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0055 
EQUATES ALCS-359
       D360 41,52,53
       D363 45,54,41
       D366 4C,4C
[3019] D368 D3,6A           DATA $+2
[3020] D36A 06,6A,78        CALL CHKEND            Must be EOS now
[3021] D36D 45,33           BR   ERRSYN            Else its an error
[3022] D36F BE,4C,5E        ST   94,@FAC2          Number of characters
[3023] D372 86,A3,F0        CLR  V@>03F0           EDGE CHAR ADDRESS
[3024] D375 35,04,0F        MOVE 1039,V@>03F0,V@>03F1 Clear bytes
       D378 A3,F1,A3
       D37B F0
[3025] D37C 31,00,08        MOVE 8,G@SPCCHR,V@>03F0 CURSOR CHAR ADDRESS
       D37F A3,F0,CF
       D382 A3
[3026] D383 BF,4A,04        DST  >0408,@FAC        Start with !
       D386 08
[3027] D387 BF,4E,9C        DST  CHARS,@FAC4       GROM ADDRESS
       D38A EA
[3028] D38B 33,00,07 CHRLP  MOVE 7,G@0(@FAC4),V@1(@FAC) Get GROM Def
       D38E E0,01,4A
       D391 00,00,4E
[3029] D394 A3,4A,00        DADD 8,@FAC            GROM ADDRESS
       D397 08
[3030] D398 A3,4E,00        DADD 7,@FAC4           VDP ADDRESS
       D39B 07
[3031] D39C 92,4C           DEC  @FAC2             Character Count-1
[3032] D39E 53,8B           BR   CHRLP             0?
[3033] D3A0 BE,A8,0F        ST   >10,V@>080F Set 1st set to black on tranparent
       D3A3 10
[3034] D3A4 35,00,10        MOVE 16,V@>080F,V@>0810  Ripple for rest
       D3A7 A8,10,A8
       D3AA 0F
[3035] D3AB 41,E3           BR   LDRET2            Return to XB
[3036]               ********************************
[3037]               * CALL USER(path-string)
[3038] D3AD D3,E8    USER   DATA BASIC
[3039] D3AF 04,55,53        STRI 'USER'           
       D3B2 45,52
[3040] D3B4 D3,B6           DATA $+2
[3041] D3B6 06,CA,32        CALL GLPARZ            PARSE UP TO "
[3042] D3B9 06,CA,3E        CALL STRGET            Get path 
[3043] D3BC BE,A8,C0        ST   >20,V@RECBUF      Clear byte
       D3BF 20
[3044] D3C0 35,00,50        MOVE 80,V@RECBUF,V@RECBUF+1 Ripple 80 times
       D3C3 A8,C1,A8
       D3C6 C0
[3045] D3C7 31,00,0A        MOVE 10,G@UPAB,V@RECBUF Set up USER PAB
       D3CA A8,C0,D3
       D3CD DE
[3046] D3CE BC,A8,C9        ST   @FAC7,V@>08C9     Set length
       D3D1 51
[3047] D3D2 34,50,A8        MOVE @FAC6,V*FAC4,V@>08CA Load PAB path
       D3D5 CA,B0,4E
[3048] D3D8 BE,A3,BB        ST   >FF,V@CONFLG      Set USER flag
       D3DB FF
[3049] D3DC 43,16           BR   PEEK5
[3050] D3DE 00,14,09 UPAB   BYTE 0,>14,>09,>00,80,0,0,0,0,0
       D3E1 00,50,00
       D3E4 00,00,00
       D3E7 00
[3051]               **************************************
[3052]               * CALL BASIC
[3053] D3E8 D3,F8    BASIC  DATA BSAVE
[3054] D3EA 05,42,41        STRI 'BASIC'           

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0056 
EQUATES ALCS-359
       D3ED 53,49,43
[3055] D3F0 D3,F2           DATA $+2
[3056] D3F2 06,80,12        CALL CLSALL
[3057] 216F          GBASIC EQU  >216F
[3058] D3F5 05,21,6F        B    GBASIC
[3059]               **************************
[3060]               * CALL BSAVE(pathstring)
[3061] D3F8 D4,18    BSAVE  DATA BLOAD
[3062] D3FA 05,42,53        STRI 'BSAVE'           
       D3FD 41,56,45
[3063] D400 D4,02           DATA $+2
[3064] D402 06,D4,4A        CALL MYSAL             * Get pathname
[3065] D405 BE,AF,10        ST   >06,V@>1000       * LOAD opcode
       D408 00,06
[3066] D40A 35,20,00        MOVE 8192,@>2000,V@>1020
       D40D AF,10,20
       D410 8F,9D,00
[3067] D413 06,D4,38        CALL MYDOIT            * DSRLNK opcode
[3068] D416 43,16           BR   PEEK5             * Done
[3069]               **************************
[3070]               * CALL BLOAD(pathstring)
[3071] D418 D4,88    BLOAD  DATA RENAME
[3072] D41A 05,42,4C        STRI 'BLOAD'           
       D41D 4F,41,44
[3073] D420 D4,22           DATA $+2
[3074] D422 06,D4,4A        CALL MYSAL             * Get pathname
[3075] D425 BE,AF,10        ST   >05,V@>1000       * LOAD opcode
       D428 00,05
[3076] D42A 06,D4,38        CALL MYDOIT            * DSRLNK opcode
[3077] D42D 35,20,00        MOVE 8192,V@>1020,@>2000
       D430 8F,9D,00
       D433 AF,10,20
[3078] D436 43,16           BR   PEEK5             * Done
[3079] D438 BF,56,10 MYDOIT DST  >1009,@FAC12      * Get buffer address in VDP
       D43B 09
[3080] D43C 06,00,10        CALL LINK              * DSRLNK
[3081] D43F 08              BYTE >08
[3082] D440 65,B5           BS   ERRFE             * File Error
[3083] D442 DA,AF,10        CLOG >E0,V@>1001       * Set error bits
       D445 01,E0
[3084] D447 45,B5           BR   ERRFE
[3085] D449 00              RTN
[3086] D44A 0F,70    MYSAL  XML  COMPCT            * GARBAGE COLLECTION
[3087] D44C BD,5E,1A        DST  @STREND,@ARG2     * String end
[3088] D44F A5,5E,6E        DSUB @VSPTR,@ARG2      * Value Stack PoinTeR
[3089] D452 A7,5E,00        DSUB 63,@ARG2          * Size of Value Stack
       D455 3F
[3090] D456 CB,5E,20        DCHE >2021,@ARG2       * Size of buffer
       D459 21
[3091] D45A 45,5A           BR   ERRSO             * Error Stack Overflow
[3092] D45C 06,CA,32        CALL GLPARZ            * (
[3093] D45F 06,CA,3E        CALL STRGET            * Pathstring
[3094] D462 86,AF,10        CLR  V@>1000           * 0 BYTE
       D465 00
[3095] D466 35,20,20        MOVE >2020,V@>1000,V@>1001 * Ripple
       D469 AF,10,01
       D46C AF,10,00
[3096] D46F BF,AF,10        DST  >1020,V@>1002     * Buffer address
       D472 02,10,20
[3097] D475 BF,AF,10        DST  >2000,V@>1006     * Number of bytes
       D478 06,20,00
[3098] D47B BC,AF,10        ST   @FAC7,V@>1009     * Length byte
       D47E 09,51
[3099] D480 34,50,AF        MOVE @FAC6,V*FAC4,V@>100A * Pathstring

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0057 
EQUATES ALCS-359
       D483 10,0A,B0
       D486 4E
[3100] D487 00              RTN
[3101]               ******************************
[3102]               * CALL RENAME(pathname,old-name,new-name)
[3103] D488 D4,DE    RENAME DATA PROT
[3104] D48A 06,52,45        STRI 'RENAME'          
       D48D 4E,41,4D
       D490 45
[3105] D491 D4,93           DATA $+2
[3106] D493 06,CA,32        CALL GLPARZ            * (
[3107] D496 06,C9,B7 RENAGN CALL DSKNAM            * Pathname
[3108] D499 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3109] D49C 45,33           BR   ERRSYN
[3110] D49E 8E,16           CZ   @DFLAG            * DSK?
[3111] D4A0 74,A5           BS   RENNP             * Yes
[3112] D4A2 06,CA,23        CALL PATH              * Set PATH
[3113] D4A5 06,CA,05 RENNP  CALL GETFN             * Old name
[3114] D4A8 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3115] D4AB 45,33           BR   ERRSYN
[3116] D4AD 06,CA,3E        CALL STRGET            * New name
[3117] D4B0 C6,51,0A        CH   10,@FAC7          * Length > 10?
[3118] D4B3 65,3F           BS   ERRNTL            * Error Name Too Long
[3119] D4B5 34,50,A3        MOVE @FAC6,V*FAC4,V@>03D0
       D4B8 D0,B0,4E
[3120] D4BB BC,4C,17        ST   @DEVNUM,@FAC2     * DSK#
[3121] D4BE BF,4E,03        DST  >03D0,@FAC4       * New name
       D4C1 D0
[3122] D4C2 BF,50,03        DST  >03C2,@FAC6       * Old name
       D4C5 C2
[3123] D4C6 8E,16           CZ   @DFLAG            * DSK?
[3124] D4C8 74,D2           BS   RENDSK            * Yes
[3125] D4CA 06,C9,9D        CALL DSKDSR            * DSKLNK
[3126] D4CD 01,23           DATA >0123             * Opcode RENAME HARD
[3127] D4CF 05,D4,D7        B    RENEND
[3128] D4D2 06,C9,9D RENDSK CALL DSKDSR            * DSKLNK
[3129] D4D5 01,13           DATA >0113             * Opcode RENAME DISK
[3130] D4D7 D6,42,B3 RENEND CEQ  COMMAZ,@CHAT      * ,
[3131] D4DA 74,96           BS   RENAGN            * Redo again
[3132] D4DC 43,16           BR   PEEK5
[3133]               *******************************
[3134]               * CALL PROTECT(pathname,filename,flag)
[3135] D4DE D5,2A    PROT   DATA SCSI
[3136] D4E0 07,50,52        STRI 'PROTECT'         
       D4E3 4F,54,45
       D4E6 43,54
[3137] D4E8 D4,EA           DATA $+2
[3138] D4EA 06,CA,32        CALL GLPARZ            * (
[3139] D4ED 06,C9,B7 PROAGN CALL DSKNAM            * Get pathname
[3140] D4F0 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3141] D4F3 45,33           BR   ERRSYN
[3142] D4F5 8E,16           CZ   @DFLAG            * DSK?
[3143] D4F7 74,FC           BS   PRONP             * Yes
[3144] D4F9 06,CA,23        CALL PATH              * Set PATH
[3145] D4FC 06,CA,05 PRONP  CALL GETFN             * Get filename
[3146] D4FF 06,CA,88        CALL SUBLP3            * Option number
[3147] D502 86,4D           CLR  @FAC3             * UNPROTECT
[3148] D504 8F,4A           DCZ  @FAC              * Unprotect?
[3149] D506 75,0B           BS   UNPRO
[3150] D508 BE,4D,FF        ST   >FF,@FAC3         * PROTECT
[3151] D50B BC,4C,17 UNPRO  ST   @DEVNUM,@FAC2     * DSK#
[3152] D50E BF,4E,03        DST  >03C2,@FAC4       * Filename
       D511 C2
[3153] D512 8E,16           CZ   @DFLAG            * DSK?

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0058 
EQUATES ALCS-359
[3154] D514 75,1E           BS   PRODSK            * Yes
[3155] D516 06,C9,9D        CALL DSKDSR            * DSRLNK
[3156] D519 01,22           DATA >0122             * Opcode PROTECT HARD
[3157] D51B 05,D5,23        B    PROEND
[3158] D51E 06,C9,9D PRODSK CALL DSKDSR            * DSRLNK
[3159] D521 01,12           DATA >0112             * Opcode PROTECT DISK
[3160] D523 D6,42,B3 PROEND CEQ  COMMAZ,@CHAT      * ,
[3161] D526 74,ED           BS   PROAGN            * Redo again
[3162] D528 43,16           BR   PEEK5
[3163]               *******************************
[3164]               * CALL SCSI(pathname,string-variable)
[3165] D52A D5,59    SCSI   DATA MKDIR
[3166] D52C 04,53,43        STRI 'SCSI'            
       D52F 53,49
[3167] D531 D5,33           DATA $+2
[3168] D533 06,CA,32        CALL GLPARZ            * (
[3169] D536 06,C9,B7 SCSAGN CALL DSKNAM            * Pathname
[3170] D539 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3171] D53C 45,33           BR   ERRSYN
[3172] D53E BF,0C,00        DST  44,@BYTES         * Length of buffer
       D541 2C
[3173] D542 0F,71           XML  GETSTR            * Get string space
[3174] D544 BC,4C,17        ST   @DEVNUM,@FAC2     * SCS#
[3175] D547 BD,4E,1C        DST  @SREF,@FAC4       * String address
[3176] D54A 06,C9,9D        CALL DSKDSR            * DSRLNK
[3177] D54D 01,1C           DATA >011C             * Opcode EXAMINE SCSI
[3178] D54F 06,CA,61        CALL NGOOD             * Assign string to variable
[3179] D552 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3180] D555 75,36           BS   SCSAGN            * Redo again
[3181] D557 43,16           BR   PEEK5
[3182]               *******************************
[3183]               * CALL MKDIR(pathname,directory-name)
[3184] D559 D5,C2    MKDIR  DATA RMDIR
[3185] D55B 05,4D,4B        STRI 'MKDIR'           
       D55E 44,49,52
[3186] D561 D5,63           DATA $+2
[3187] D563 BF,0C,00        DST  255,@BYTES        * For sector 0 access
       D566 FF
[3188] D567 0F,71           XML  GETSTR            * Get string space
[3189] D569 BD,00,1C        DST  @SREF,@VAR0       * Buffer address
[3190] D56C 93,00           DDEC @VAR0             * Make it 256 byte buffer
[3191] D56E 06,CA,32        CALL GLPARZ            * (
[3192] D571 06,C9,B7 MKDIR2 CALL DSKNAM            * Pathname
[3193] D574 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3194] D577 45,33           BR   ERRSYN
[3195] D579 8E,16           CZ   @DFLAG            * DSK?
[3196] D57B 55,A9           BR   MKDIR3            * No, Hard
[3197] D57D C6,51,05        CH   5,@FAC7           * Length > 5?
[3198] D580 65,3F           BS   ERRNTL            * Error Name Too Long
[3199] D582 06,CA,05        CALL GETFN             * Filename
[3200] D585 BE,4D,FF        ST   >FF,@FAC3         * Set to READ SECTOR
[3201] D588 55,8C           BR   VOL1ST
[3202] D58A 86,4D    VOL2ND CLR  @FAC3             * Set to WRITE SECTOR
[3203] D58C 87,4A    VOL1ST DCLR @FAC              * Returned SECTOR
[3204] D58E BC,4C,17        ST   @DEVNUM,@FAC2     * DSK#
[3205] D591 BD,4E,00        DST  @VAR0,@FAC4       * Buffer Address
[3206] D594 87,50           DCLR @FAC6             * Sector number 0 DSK
[3207] D596 06,C9,9D        CALL DSKDSR            * DSRLNK
[3208] D599 01,10           DATA >0110             * Opcode SECTOR DISK
[3209] D59B 35,00,0A        MOVE 10,V@>03C2,V*VAR0 * Copy VOLUME name over old n
       D59E B0,00,A3
       D5A1 C2
[3210] D5A2 8E,4D           CZ   @FAC3             * First pass?
[3211] D5A4 55,8A           BR   VOL2ND            * No, again

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0059 
EQUATES ALCS-359
[3212] D5A6 05,D5,BB        B    MKDIR4
[3213] D5A9 06,CA,23 MKDIR3 CALL PATH              * Set PATH
[3214] D5AC 06,CA,05        CALL GETFN             * Directory name
[3215] D5AF BC,4C,17        ST   @DEVNUM,@FAC2     * SCS#
[3216] D5B2 BF,4E,03        DST  >03C2,@FAC4       * Name address
       D5B5 C2
[3217] D5B6 06,C9,9D        CALL DSKDSR            * DSRLNK
[3218] D5B9 01,28           DATA >0128             * Opcode MAKE DIRECTORY HARD
[3219] D5BB D6,42,B3 MKDIR4 CEQ  COMMAZ,@CHAT      * ,
[3220] D5BE 75,71           BS   MKDIR2            * Redo again
[3221] D5C0 43,16           BR   PEEK5
[3222]               *******************************
[3223] D5C2 D5,F0    RMDIR  DATA CUTDIR
[3224] D5C4 05,52,4D        STRI 'RMDIR'           CALL RMDIR(pathname,directory
       D5C7 44,49,52
[3225] D5CA D5,CC           DATA $+2
[3226] D5CC 06,CA,32        CALL GLPARZ            * (
[3227] D5CF 06,C9,B7 RMDIR2 CALL DSKNAM            * Pathname
[3228] D5D2 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3229] D5D5 45,33           BR   ERRSYN
[3230] D5D7 06,CA,23        CALL PATH              * Set PATH
[3231] D5DA 06,CA,05        CALL GETFN             * Directory name
[3232] D5DD BC,4C,17        ST   @DEVNUM,@FAC2     * SCS#
[3233] D5E0 BF,4E,03        DST  >03C2,@FAC4       * Name address
       D5E3 C2
[3234] D5E4 06,C9,9D        CALL DSKDSR            * DSRLNK
[3235] D5E7 01,29           DATA >0129             * REMOVE DIRECTORY HARDDRIVE
[3236] D5E9 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3237] D5EC 75,CF           BS   RMDIR2            * Redo again
[3238] D5EE 43,16           BR   PEEK5
[3239]               *******************************
[3240] D5F0 D6,1C    CUTDIR DATA FCOPY
[3241] D5F2 06,43,55        STRI 'CUTDIR'          CALL CUTDIR(pathname,director
       D5F5 54,44,49
       D5F8 52
[3242] D5F9 D5,FB           DATA $+2
[3243] D5FB 06,CA,32        CALL GLPARZ            * (
[3244] D5FE 06,C9,B7 CUTDI2 CALL DSKNAM            * Pathname
[3245] D601 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3246] D604 45,33           BR   ERRSYN
[3247] D606 06,CA,05        CALL GETFN             * Set PATH
[3248] D609 BC,4C,17        ST   @DEVNUM,@FAC2     * SCS#
[3249] D60C BF,4E,03        DST  >03C2,@FAC4       * Name address
       D60F C2
[3250] D610 06,C9,9D        CALL DSKDSR            * DSRLNK
[3251] D613 01,2A           DATA >012A             * CUT DIRECTORY HARDDRIVE
[3252] D615 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3253] D618 75,FE           BS   CUTDI2            * Redo again
[3254] D61A 43,16           BR   PEEK5
[3255]               ***********************************************************
[3256]               * CALL FCOPY(pathname1,filename1,pathname2,filename2)
[3257] D61C D7,4C    FCOPY  DATA SECTOR
[3258] D61E 05,46,43        STRI 'FCOPY' 
       D621 4F,50,59
[3259] D624 D6,26           DATA $+2
[3260] D626 0F,70           XML  COMPCT            * GARBAGE COLLECT
[3261] D628 BD,5E,1A        DST  @STREND,@ARG2     * String end
[3262] D62B A5,5E,6E        DSUB @VSPTR,@ARG2      * Value Stack PoinTeR address
[3263] D62E A7,5E,00        DSUB 63,@ARG2          * Value stack size
       D631 3F
[3264] D632 CB,5E,10        DCHE >1001,@ARG2       * Buffer size
       D635 01
[3265] D636 45,5A           BR   ERRSO             * Error Stack Overflow
[3266] D638 06,CA,32        CALL GLPARZ            * (

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0060 
EQUATES ALCS-359
[3267] D63B 86,00    FCOPY1 CLR  @VAR0             * Clear Additional info Buffe
[3268] D63D 35,00,0C        MOVE 12,@VAR0,@VARV    * Ripple
       D640 01,00
[3269] D642 06,C9,B7        CALL DSKNAM            * 1st pathname
[3270] D645 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3271] D648 45,33           BR   ERRSYN
[3272] D64A BD,A3,8C        DST  @DFLAG,V@BUFSRT   * FLAG/DSK#
       D64D 16
[3273] D64E BD,12,10        DST  @VAR5,@STRPTR     * 1st pathname
[3274] D651 06,CA,05        CALL GETFN             * 1st filename
[3275] D654 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3276] D657 45,33           BR   ERRSYN
[3277] D659 06,C9,B7        CALL DSKNAM            * 2nd pathname
[3278] D65C D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3279] D65F 45,33           BR   ERRSYN
[3280] D661 BD,A3,8E        DST  @DFLAG,V@BUFEND   * FLAG/DSK#
       D664 16
[3281] D665 BD,14,10        DST  @VAR5,@CURLIN     * 2nd pathname
[3282] D668 06,CA,3E        CALL STRGET            * 2nd filename
[3283] D66B C6,51,0A        CH   10,@FAC7          * Length > 10 ?
[3284] D66E 65,3F           BS   ERRNTL            * Error Name Too Long
[3285] D670 8E,51           CZ   @FAC7             * Length = 0?
[3286] D672 65,9A           BS   ERRBA             * Error Bad Argument
[3287] D674 34,50,A3        MOVE @FAC6,V*FAC4,V@>03D0 * 2nd filename into buffer
       D677 D0,B0,4E
[3288] D67A 86,4D           CLR  @FAC3             * ADDitional INFO ACCESS CODE
[3289] D67C 06,D6,E7        CALL FREAD             * READ FILE HEADER
[3290] D67F BD,1C,02        DST  @MNUM,@SREF       * Save # of Sectors of First
[3291] D682 86,4D           CLR  @FAC3             * ADDITIONAL INFO ACCESS CODE
[3292] D684 06,D7,14        CALL FWRTE             * WRITE FILE HEADER
[3293] D687 BD,5C,1C        DST  @SREF,@ARG        * Get Total number of Sectors
[3294] D68A 87,4A           DCLR @FAC              * Clear PASS counter
[3295] D68C CB,5C,00 FCOPY2 DCHE 4,@ARG            * ARG>=4 Sectors?
       D68F 04
[3296] D690 76,9A           BS   FCOPY3            * Yes
[3297] D692 90,4A           INC  @FAC              * PASS+1
[3298] D694 BC,4B,5D        ST   @ARG1,@FAC1       * Save number of sectors left
[3299] D697 05,D6,A3        B    FCOPY4            * Done
[3300] D69A A7,5C,00 FCOPY3 DSUB 3,@ARG            * Sectors-3
       D69D 03
[3301] D69E 90,4A           INC  @FAC              * PASS+1
[3302] D6A0 05,D6,8C        B    FCOPY2            * Loop
[3303] D6A3 BD,1C,4A FCOPY4 DST  @FAC,@SREF        * PASS/Number of sectors left
[3304] D6A6 87,0E           DCLR @CURINC           * Sector Pointer
[3305] D6A8 D6,1C,01 FCOPY5 CEQ  1,@SREF           * Last PASS?
[3306] D6AB 56,B3           BR   FCOPY6            * No
[3307] D6AD BC,4D,1D        ST   @SREF+1,@FAC3     * # of sectors Left to read
[3308] D6B0 05,D6,B6        B    FCOPY7            * Continue
[3309] D6B3 BE,4D,03 FCOPY6 ST   3,@FAC3           * 3 Sectors to read
[3310] D6B6 BD,A3,BA FCOPY7 DST  @CURINC,V@>03BA   * Save SECTOR NUMBER TO USE
       D6B9 0E
[3311] D6BA BD,02,0E        DST  @CURINC,@MNUM     * SECTOR NUMBER TO USE
[3312] D6BD 06,D6,E7        CALL FREAD             * READ FILE SECTOR
[3313] D6C0 D6,1C,01        CEQ  1,@SREF           * Last PASS?
[3314] D6C3 56,CB           BR   FCOPY8            * No
[3315] D6C5 BC,4D,1D        ST   @SREF+1,@FAC3     * N# of sectors left to write
[3316] D6C8 05,D6,CE        B    FCOPY9            * Continue
[3317] D6CB BE,4D,03 FCOPY8 ST   3,@FAC3           * 3 Sectors to write
[3318] D6CE BD,0E,A3 FCOPY9 DST  V@>03BA,@CURINC   * Get sectors to write
       D6D1 BA
[3319] D6D2 BD,02,0E        DST  @CURINC,@MNUM     * SECTOR NUMBER TO USE
[3320] D6D5 06,D7,14        CALL FWRTE             * WRITE FILE SECTOR
[3321] D6D8 A3,0E,00        DADD 3,@CURINC         * SECTOR+3
       D6DB 03

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0061 
EQUATES ALCS-359
[3322] D6DC 92,1C           DEC  @SREF             * PASS-1
[3323] D6DE 56,A8           BR   FCOPY5            * 0=END
[3324] D6E0 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3325] D6E3 76,3B           BS   FCOPY1            * Redo again
[3326] D6E5 43,16           BR   PEEK5
[3327]               *******************************
[3328] D6E7 BD,16,A3 FREAD  DST  V@BUFSRT,@DFLAG   * 1st FLAG/DSR#
       D6EA 8C
[3329] D6EB 8E,16           CZ   @DFLAG            * DSK?
[3330] D6ED 76,F5           BS   FREAD1            * Yes
[3331] D6EF BD,10,12        DST  @STRPTR,@VAR5     * 1st path
[3332] D6F2 06,CA,23        CALL PATH              * Set PATH
[3333] D6F5 BF,00,10 FREAD1 DST  >1000,@VAR0       * Buffer address in Add info
       D6F8 00
[3334] D6F9 BC,4C,17        ST   @DEVNUM,@FAC2     * DSK#
[3335] D6FC BF,4E,03        DST  >03C2,@FAC4       * 1st filename
       D6FF C2
[3336] D700 86,50           CLR  @FAC6             * Pointer to Additional info
[3337] D702 8E,16           CZ   @DFLAG            * DSK?
[3338] D704 77,0D           BS   FREAD2            * Yes
[3339] D706 BF,A3,C0        DST  >0124,V@>03C0     * Opcode INPUT HARD
       D709 01,24
[3340] D70B 57,3F           BR   RWDSR
[3341] D70D BF,A3,C0 FREAD2 DST  >0114,V@>03C0     * Opcode INPUT DISK
       D710 01,14
[3342] D712 57,3F           BR   RWDSR             * DSRLNK
[3343]               *******************************
[3344] D714 BD,16,A3 FWRTE  DST  V@BUFEND,@DFLAG   * 2nd FLAG/DSK#
       D717 8E
[3345] D718 8E,16           CZ   @DFLAG            * DSK?
[3346] D71A 77,22           BS   FWRTE1            * Yes
[3347] D71C BD,10,14        DST  @CURLIN,@VAR5     * 2nd PATH
[3348] D71F 06,CA,23        CALL PATH              * Set PATH
[3349] D722 BF,00,10 FWRTE1 DST  >1000,@VAR0       * Buffer Address in Add info
       D725 00
[3350] D726 BC,4C,17        ST   @DEVNUM,@FAC2     * DSK#
[3351] D729 BF,4E,03        DST  >03D0,@FAC4       * 2nd Filename
       D72C D0
[3352] D72D 86,50           CLR  @FAC6             * Pointer to Add info block
[3353] D72F 8E,16           CZ   @DFLAG            * DSK#
[3354] D731 77,3A           BS   FWRTE2            * Yes
[3355] D733 BF,A3,C0        DST  >0125,V@>03C0     * Opcode OUTPUT HARD
       D736 01,25
[3356] D738 57,3F           BR   RWDSR
[3357] D73A BF,A3,C0 FWRTE2 DST  >0115,V@>03C0     * Opcode OUTPUT DISK
       D73D 01,15
[3358]               *******************************
[3359] D73F BF,56,03 RWDSR  DST >03C0,@FAC12       * Buffer address
       D742 C0
[3360] D743 06,00,10        CALL LINK              * DSRLNK
[3361] D746 0A              BYTE >0A               * Subroutine
[3362] D747 8E,50           CZ   @FAC6             * ERRORS?
[3363] D749 45,B5           BR   ERRFE             * Yes, File Error
[3364] D74B 00              RTN
[3365]               *******************************
[3366]               * CALL SECTOR(pathname,RWflag,#Sectors,sector-string)
[3367] D74C 00,00    SECTOR DATA >0000
[3368] D74E 06,53,45        STRI 'SECTOR' 
       D751 43,54,4F
       D754 52
[3369] D755 D7,57           DATA $+2
[3370] D757 0F,70           XML  COMPCT
[3371] D759 BD,5E,1A        DST  @STREND,@ARG2
[3372] D75C A5,5E,6E        DSUB @VSPTR,@ARG2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0062 
EQUATES ALCS-359
[3373] D75F A7,5E,00        DSUB 63,@ARG2
       D762 3F
[3374] D763 CB,5E,01        DCHE 260,@ARG2
       D766 04
[3375] D767 45,5A           BR   ERRSO
[3376] D769 06,CA,32        CALL GLPARZ            * (
[3377] D76C 06,C9,B7 SECTOS CALL DSKNAM            * Pathname
[3378] D76F D6,42,B3        CEQ  COMMAZ,@CHAT      * ,
[3379] D772 45,33           BR   ERRSYN
[3380] D774 06,CA,58        CALL GETNUM            * R/W Flag
[3381] D777 86,00           CLR  @VAR0             * WRITE Flag
[3382] D779 8F,4A           DCZ  @FAC              * 0000?
[3383] D77B 77,7F           BS   SECTO1
[3384] D77D 90,00           INC  @VAR0             * READ Flag
[3385] D77F 06,CA,58 SECTO1 CALL GETNUM            * #SECTORS
[3386] D782 8F,4A           DCZ  @FAC              * 0000?
[3387] D784 65,A2           BS   ERRBV
[3388] D786 CB,4A,00        DCHE 33,@FAC           * Only 32 sectors allowed.
       D789 21
[3389] D78A 65,A2           BS   ERRBV
[3390] D78C BC,01,4B        ST   @FAC1,@VARV       * Save # SECTORS
[3391] D78F 06,CA,3E        CALL STRGET            * SECTOR $
[3392] D792 8F,50           DCZ  @FAC6             * 0 string length?
[3393] D794 65,A2           BS   ERRBV
[3394] D796 8E,16           CZ   @DFLAG            * DSK?
[3395] D798 57,A0           BR   SECTO2            * No.
[3396] D79A CB,50,00        DCHE 5,@FAC6           * String to long?
       D79D 05
[3397] D79E 65,A2           BS   ERRBV
[3398]               *********************************************************
[3399]               * Maximum Drive size is 4294967295 Sectors or >FFFFFFFF *
[3400]               *********************************************************
[3401] D7A0 CB,50,00 SECTO2 DCHE 9,@FAC6           * String to long HARD?
       D7A3 09
[3402] D7A4 65,A2           BS   ERRBV             * Bad Value Error
[3403] D7A6 BD,0C,50        DST  @FAC6,@BYTES      * Save string length value.
[3404] D7A9 A1,4E,50        DADD @FAC6,@FAC4       * Point past end of string.
[3405] D7AC 93,4E           DDEC @FAC4             * Offset to end of string.
[3406] D7AE 86,50           CLR  @FAC6             * Sector # buffer.
[3407] D7B0 35,00,04        MOVE 4,@FAC6,@FAC7     * Clear buffer for string.
       D7B3 51,50
[3408] D7B5 BF,5C,03        DST  >03C3,@ARG        * # number pointer
       D7B8 C3
[3409] D7B9 86,A3,C0        CLR  V@>03C0           * Clear byte in buffer
[3410] D7BC 35,00,04        MOVE 4,V@>03C0,V@>03C1 * Ripple clear 4 bytes
       D7BF A3,C1,A3
       D7C2 C0
[3411] D7C3 86,4A    SECTO3 CLR  @FAC
[3412] D7C5 BC,4A,B0 SECTO4 ST   V*FAC4,@FAC       * Get character.
       D7C8 4E
[3413] D7C9 CA,4A,47        CHE  71,@FAC           * G or higher?
[3414] D7CC 65,9A           BS   ERRBA
[3415] D7CE CA,4A,41        CHE  65,@FAC           * A or higher?
[3416] D7D1 77,DD           BS   SECTO5
[3417] D7D3 CA,4A,3A        CHE  58,@FAC           * : or higher?
[3418] D7D6 65,9A           BS   ERRBA
[3419] D7D8 CA,4A,30        CHE  48,@FAC           * 0 or higher?
[3420] D7DB 45,9A           BR   ERRBA
[3421] D7DD A6,4A,30 SECTO5 SUB  48,@FAC           * - 0
[3422] D7E0 CA,4A,0A        CHE  10,@FAC           * 10 or higher?
[3423] D7E3 57,E8           BR   SECTO6
[3424] D7E5 A6,4A,07        SUB  >07,@FAC          * - 7
[3425] D7E8 BC,4C,4A SECTO6 ST   @FAC,@FAC2        * Save nibble.
[3426] D7EB 93,4E           DDEC @FAC4             * $ pointer - 1

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0063 
EQUATES ALCS-359
[3427] D7ED 93,0C           DDEC @BYTES            * $ length - 1
[3428] D7EF 57,F8           BR   SECTO7
[3429] D7F1 BC,B0,5C        ST   @FAC2,V*ARG       * Save #
       D7F4 4C
[3430] D7F5 05,D8,2D        B    SECTOA            * End routine.
[3431] D7F8 BC,4A,B0 SECTO7 ST   V*FAC4,@FAC       * Get character.
       D7FB 4E
[3432] D7FC CA,4A,47        CHE  71,@FAC           * G or higher?
[3433] D7FF 65,9A           BS   ERRBA
[3434] D801 CA,4A,41        CHE  65,@FAC           * A or higher?
[3435] D804 78,10           BS   SECTO8
[3436] D806 CA,4A,3A        CHE  58,@FAC           * : or higher?
[3437] D809 65,9A           BS   ERRBA
[3438] D80B CA,4A,30        CHE  48,@FAC           * 0 or higher?
[3439] D80E 45,9A           BR   ERRBA
[3440] D810 A6,4A,30 SECTO8 SUB  48,@FAC           * - 0
[3441] D813 CA,4A,0A        CHE  10,@FAC           * 10 or higher?
[3442] D816 58,1B           BR   SECTO9
[3443] D818 A6,4A,07        SUB  >07,@FAC          * - 7
[3444] D81B E2,4A,04 SECTO9 SLL  4,@FAC            * Swap nibbles.
[3445] D81E A0,4A,4C        ADD  @FAC2,@FAC        * Add old nibble.
[3446] D821 BC,B0,5C        ST   @FAC,V*ARG        * Save #
       D824 4A
[3447] D825 93,5C           DDEC @ARG              * # pointer - 1
[3448] D827 93,4E           DDEC @FAC4             * $ pointer - 1
[3449] D829 93,0C           DDEC @BYTES            * $ length - 1
[3450] D82B 57,C3           BR   SECTO3
[3451] D82D 35,00,04 SECTOA MOVE 4,V@>03C0,@FAC6   * Get SECTOR # string
       D830 50,A3,C0
[3452] D833 C1,50,52        DEX  @FAC8,@FAC6       * SWAP FAC6 with FAC8
[3453] D836 8E,16           CZ   @DFLAG            * DSK?
[3454] D838 58,3D           BR   SECTOB            * No.
[3455] D83A BD,50,52        DST  @FAC8,@FAC6       * DISK
[3456] D83D 87,1C    SECTOB DCLR @SREF             * CPU BUFFER
[3457] D83F 87,4A    SECTOC DCLR @FAC              * Clear Returned Sector.
[3458] D841 BC,4C,17        ST   @DEVNUM,@FAC2     * UNIT#
[3459] D844 BC,4D,00        ST   @VAR0,@FAC3       * R/W Flag.
[3460] D847 BF,4E,10        DST  >1000,@FAC4       * VDP BUFFER
       D84A 00
[3461] D84B 8E,16           CZ   @DFLAG            * DSK?
[3462] D84D 78,56           BS   SECTOD            * Yes.
[3463] D84F BF,A3,C0        DST  >0120,V@>03C0     * HARD
       D852 01,20
[3464] D854 58,5B           BR    SECTOE
[3465] D856 BF,A3,C0 SECTOD DST  >0110,V@>03C0     * DISK
       D859 01,10
[3466] D85B 8E,00    SECTOE CZ   @VAR0             * WRITE FLAG?
[3467] D85D 58,69           BR   SECT0F            * NO
[3468] D85F 35,01,00        MOVE 256,@>2000(@SREF),V@>1000  * WRITE CPU BUFFER
       D862 AF,10,00
       D865 CF,9D,00
       D868 1C
[3469] D869 06,D7,3F SECT0F CALL RWDSR             * DSR Access.
[3470] D86C 8E,00           CZ   @VAR0             * WRITE FLAG?
[3471] D86E 78,7A           BS   SECWRT            * YES
[3472] D870 35,01,00        MOVE 256,V@>1000,@>2000(@SREF)  * READ VDP BUFFER
       D873 CF,9D,00
       D876 1C,AF,10
       D879 00
[3473] D87A A3,1C,01 SECWRT DADD 256,@SREF         * CPU BUFFER + 256
       D87D 00
[3474] D87E 8E,16           CZ   @DFLAG            * DSK?
[3475] D880 78,90           BS   SECTOH            * Yes.
[3476] D882 D7,50,FF        DCEQ >FFFF,@FAC6       * Overflow one word?

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0064 
EQUATES ALCS-359
       D885 FF
[3477] D886 78,8A           BS   SECTOG            * Yes.
[3478] D888 58,90           BR   SECTOH            * No.
[3479] D88A 87,50    SECTOG DCLR @FAC6             * HARD LOW BYTE=0000
[3480] D88C 91,52           DINC @FAC8             * HARD HIGH BYTE + 1
[3481] D88E 58,92           BR   SECTOI            
[3482] D890 91,50    SECTOH DINC @FAC6             * SECTOR# + 1 DISK & HARD
[3483] D892 92,01    SECTOI DEC  @VARV             * #SECTORS - 1
[3484] D894 58,3F           BR   SECTOC
[3485] D896 D6,42,B3        CEQ  COMMAZ,@CHAT      * ,?
[3486] D899 77,6C           BS   SECTOS            * Repeat.
[3487] D89B 43,16           BR   PEEK5
[3488]               ***********************************************************
[3489]               * EDITOR ASSEMBLER LOWER 8K SUPPORT
[3490]               * Data for Initialization of
[3491]               * Memory Expansion
[3492]               *
[3493] D89D A5,5A,21 LOW1  DATA  >A55A,>2128,>2398,>225A
       D8A0 28,23,98
       D8A3 22,5A
[3494] D8A5 A0,00,FF LOW2  DATA  >A000,>FFD7,>2676,>3F38
       D8A8 D7,26,76
       D8AB 3F,38
[3495] D8AD 00,64,20 LOW3  DATA  >0064,>2000,>2EAA,>2094
       D8B0 00,2E,AA
       D8B3 20,94
[3496] D8B5 21,C4,20       DATA  >21C4,>2094,>2196,>2094,>21DE,>2094,>21F4
       D8B8 94,21,96
       D8BB 20,94,21
       D8BE DE,20,94
       D8C1 21,F4
[3497] D8C3 20,94,22       DATA  >2094,>2200,>2094,>220E,>2094,>221A,>2094,>2228
       D8C6 00,20,94
       D8C9 22,0E,20
       D8CC 94,22,1A
       D8CF 20,94,22
       D8D2 28
[3498] D8D3 20,9A,22       DATA  >209A,>22B2,>20DA,>23BA,>C80B,>2030,>D060
       D8D6 B2,20,DA
       D8D9 23,BA,C8
       D8DC 0B,20,30
       D8DF D0,60
[3499] D8E1 83,49,20       DATA  >8349,>2060,>20FC,>132A,>C020,>8350,>1311,>06A0
       D8E4 60,20,FC
       D8E7 13,2A,C0
       D8EA 20,83,50
       D8ED 13,11,06
       D8F0 A0
[3500] D8F1 26,46,10       DATA  >2646,>101E,>0281,>3F38,>1319,>C001,>0202
       D8F4 1E,02,81
       D8F7 3F,38,13
       D8FA 19,C0,01
       D8FD 02,02
[3501] D8FF 83,4A,8C       DATA  >834A,>8CB0,>1611,>8CB0,>160F,>8CB0,>160D,>C810
       D902 B0,16,11
       D905 8C,B0,16
       D908 0F,8C,B0
       D90B 16,0D,C8
       D90E 10
[3502] D90F 20,22,02       DATA  >2022,>02E0,>20BA,>C020,>2022,>1309,>0690
       D912 E0,20,BA
       D915 C0,20,20
       D918 22,13,09
       D91B 06,90

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0065 
EQUATES ALCS-359
[3503] D91D 02,E0,83       DATA  >02E0,>83E0,>C2E0,>2030,>045B,>0221,>0008,>10E4
       D920 E0,C2,E0
       D923 20,30,04
       D926 5B,02,21
       D929 00,08,10
       D92C E4
[3504] D92D 02,00,0F       DATA  >0200,>0F00,>D800,>8322,>02E0,>83E0,>0460
       D930 00,D8,00
       D933 83,22,02
       D936 E0,83,E0
       D939 04,60
[3505] D93B 00,CE,58       DATA  >00CE,>5820,>20FC,>8349,>02E0,>2094,>0380,>C83E
       D93E 20,20,FC
       D941 83,49,02
       D944 E0,20,94
       D947 03,80,C8
       D94A 3E
[3506] D94B 83,E2,02       DATA  >83E2,>02E0,>83E0,>C80B,>20AA,>C081,>0281
       D94E E0,83,E0
       D951 C8,0B,20
       D954 AA,C0,81
       D957 02,81
[3507] D959 80,00,1B       DATA  >8000,>1B07,>09C1,>0A11,>0A42,>09B2,>A0A1,>0CFA
       D95C 07,09,C1
       D95F 0A,11,0A
       D962 42,09,B2
       D965 A0,A1,0C
       D968 FA
[3508] D969 C0,92,06       DATA  >C092,>0692,>02E0,>2094,>C80B,>83F6,>0380
       D96C 92,02,E0
       D96F 20,94,C8
       D972 0B,83,F6
       D975 03,80
[3509] D977 D0,60,83       DATA  >D060,>8373,>0981,>C87E,>8304,>F820,>20FC,>8349
       D97A 73,09,81
       D97D C8,7E,83
       D980 04,F8,20
       D983 20,FC,83
       D986 49
[3510] D987 02,E0,83       DATA  >02E0,>83E0,>C2E0,>2030,>045B,>02E0,>83E0
       D98A E0,C2,E0
       D98D 20,30,04
       D990 5B,02,E0
       D993 83,E0
[3511] D995 C8,0B,20       DATA  >C80B,>20AA,>06A0,>000E,>02E0,>2094,>C80B,>83F6
       D998 AA,06,A0
       D99B 00,0E,02
       D99E E0,20,94
       D9A1 C8,0B,83
       D9A4 F6
[3512] D9A5 03,80,06       DATA  >0380,>06A0,>223A,>D82D,>0002,>8C00,>0380
       D9A8 A0,22,3A
       D9AB D8,2D,00
       D9AE 02,8C,00
       D9B1 03,80
[3513] D9B3 06,A0,22       DATA  >06A0,>223A,>D831,>8C00,>0602,>16FC,>0380,>06A0
       D9B6 3A,D8,31
       D9B9 8C,00,06
       D9BC 02,16,FC
       D9BF 03,80,06
       D9C2 A0
[3514] D9C3 22,40,DB       DATA  >2240,>DB60,>8800,>0002,>0380,>06A0,>2240
       D9C6 60,88,00
       D9C9 00,02,03

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0066 
EQUATES ALCS-359
       D9CC 80,06,A0
       D9CF 22,40
[3515] D9D1 DC,60,88       DATA  >DC60,>8800,>0602,>16FC,>0380,>C05D,>D82D,>0001
       D9D4 00,06,02
       D9D7 16,FC,03
       D9DA 80,C0,5D
       D9DD D8,2D,00
       D9E0 01
[3516] D9E1 8C,02,02       DATA  >8C02,>0261,>8000,>D801,>8C02,>0380,>0201
       D9E4 61,80,00
       D9E7 D8,01,8C
       D9EA 02,03,80
       D9ED 02,01
[3517] D9EF 40,00,10       DATA  >4000,>1001,>04C1,>C09D,>D820,>2099,>8C02,>E081
       D9F2 01,04,C1
       D9F5 C0,9D,D8
       D9F8 20,20,99
       D9FB 8C,02,E0
       D9FE 81
[3518] D9FF D8,02,8C       DATA  >D802,>8C02,>C06D,>0002,>C0AD,>0004,>045B
       DA02 02,C0,6D
       DA05 00,02,C0
       DA08 AD,00,04
       DA0B 04,5B
[3519] DA0D 02,04,83       DATA  >0204,>834A,>C014,>C184,>04F6,>04F6,>C140,>1323
       DA10 4A,C0,14
       DA13 C1,84,04
       DA16 F6,04,F6
       DA19 C1,40,13
       DA1C 23
[3520] DA1D 07,40,02       DATA  >0740,>0203,>0040,>04F6,>04D6,>0280,>0064
       DA20 03,00,40
       DA23 04,F6,04
       DA26 D6,02,80
       DA29 00,64
[3521] DA2B 1A,13,02       DATA  >1A13,>0280,>2710,>1A08,>0583,>C040,>04C0,>3C20
       DA2E 80,27,10
       DA31 1A,08,05
       DA34 83,C0,40
       DA37 04,C0,3C
       DA3A 20
[3522] DA3B 20,FA,D9       DATA  >20FA,>D920,>83E3,>0003,>0583,>C040,>04C0
       DA3E 20,83,E3
       DA41 00,03,05
       DA44 83,C0,40
       DA47 04,C0
[3523] DA49 3C,20,20       DATA  >3C20,>20FA,>D920,>83E3,>0002,>D920,>83E1,>0001
       DA4C FA,D9,20
       DA4F 83,E3,00
       DA52 02,D9,20
       DA55 83,E1,00
       DA58 01
[3524] DA59 D5,20,83       DATA  >D520,>83E7,>0545,>1101,>0514,>045B,>C17E
       DA5C E7,05,45
       DA5F 11,01,05
       DA62 14,04,5B
       DA65 C1,7E
[3525] DA67 53,E0,20       DATA  >53E0,>20FC,>C020,>8356,>C240,>0229,>FFF8,>0420
       DA6A FC,C0,20
       DA6D 83,56,C2
       DA70 40,02,29
       DA73 FF,F8,04
       DA76 20
[3526] DA77 21,14,D0       DATA  >2114,>D0C1,>0983,>0704,>0202,>208C,>0580

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0067 
EQUATES ALCS-359
       DA7A C1,09,83
       DA7D 07,04,02
       DA80 02,20,8C
       DA83 05,80
[3527] DA85 05,84,80       DATA  >0584,>80C4,>1306,>0420,>2114,>DC81,>9801,>20FE
       DA88 C4,13,06
       DA8B 04,20,21
       DA8E 14,DC,81
       DA91 98,01,20
       DA94 FE
[3528] DA95 16,F6,C1       DATA  >16F6,>C104,>1352,>0284,>0007,>154F,>04E0
       DA98 04,13,52
       DA9B 02,84,00
       DA9E 07,15,4F
       DAA1 04,E0
[3529] DAA3 83,D0,C8       DATA  >83D0,>C804,>8354,>C804,>2036,>0584,>A804,>8356
       DAA6 04,83,54
       DAA9 C8,04,20
       DAAC 36,05,84
       DAAF A8,04,83
       DAB2 56
[3530] DAB3 C8,20,83       DATA  >C820,>8356,>2038,>02E0,>83E0,>04C1,>020C
       DAB6 56,20,38
       DAB9 02,E0,83
       DABC E0,04,C1
       DABF 02,0C
[3531] DAC1 0F,00,C3       DATA  >0F00,>C30C,>1301,>1E00,>022C,>0100,>04E0,>83D0
       DAC4 0C,13,01
       DAC7 1E,00,02
       DACA 2C,01,00
       DACD 04,E0,83
       DAD0 D0
[3532] DAD1 02,8C,20       DATA  >028C,>2000,>1332,>C80C,>83D0,>1D00,>0202
       DAD4 00,13,32
       DAD7 C8,0C,83
       DADA D0,1D,00
       DADD 02,02
[3533] DADF 40,00,98       DATA  >4000,>9812,>20FF,>16EE,>A0A0,>20A4,>1003,>C0A0
       DAE2 12,20,FF
       DAE5 16,EE,A0
       DAE8 A0,20,A4
       DAEB 10,03,C0
       DAEE A0
[3534] DAEF 83,D2,1D       DATA  >83D2,>1D00,>C092,>13E6,>C802,>83D2,>05C2
       DAF2 00,C0,92
       DAF5 13,E6,C8
       DAF8 02,83,D2
       DAFB 05,C2
[3535] DAFD C2,72,D1       DATA  >C272,>D160,>8355,>1309,>9C85,>16F2,>0985,>0206
       DB00 60,83,55
       DB03 13,09,9C
       DB06 85,16,F2
       DB09 09,85,02
       DB0C 06
[3536] DB0D 20,8C,9C       DATA  >208C,>9CB6,>16ED,>0605,>16FC,>0581,>C801
       DB10 B6,16,ED
       DB13 06,05,16
       DB16 FC,05,81
       DB19 C8,01
[3537] DB1B 20,3A,C8       DATA  >203A,>C809,>2034,>C80C,>2032,>0699,>10E2,>1E00
       DB1E 09,20,34
       DB21 C8,0C,20
       DB24 32,06,99
       DB27 10,E2,1E

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0068 
EQUATES ALCS-359
       DB2A 00
[3538] DB2B 02,E0,20       DATA  >02E0,>209A,>C009,>0420,>2114,>09D1,>1604
       DB2E 9A,C0,09
       DB31 04,20,21
       DB34 14,09,D1
       DB37 16,04
[3539] DB39 03,80,02       DATA  >0380,>02E0,>209A,>04C1,>06C1,>D741,>F3E0,>20FC
       DB3C E0,20,9A
       DB3F 04,C1,06
       DB42 C1,D7,41
       DB45 F3,E0,20
       DB48 FC
[3540] DB49 03,80,C8       DATA  >0380,>C80B,>2030,>02E0,>20BA,>0420,>2124
       DB4C 0B,20,30
       DB4F 02,E0,20
       DB52 BA,04,20
       DB55 21,24
[3541] DB57 02,E0,83       DATA  >02E0,>83E0,>1303,>C2E0,>2030,>045B,>D820,>20BA
       DB5A E0,13,03
       DB5D C2,E0,20
       DB60 30,04,5B
       DB63 D8,20,20
       DB66 BA
[3542] DB67 83,22,04       DATA  >8322,>0460,>00CE,>04E0,>2022,>53E0,>20FC
       DB6A 60,00,CE
       DB6D 04,E0,20
       DB70 22,53,E0
       DB73 20,FC
[3543] DB75 C0,20,83       DATA  >C020,>8356,>0420,>2120,>0008,>1332,>0220,>FFF7
       DB78 56,04,20
       DB7B 21,20,00
       DB7E 08,13,32
       DB81 02,20,FF
       DB84 F7
[3544] DB85 02,01,02       DATA  >0201,>0200,>0420,>210C,>0580,>C800,>202E
       DB88 00,04,20
       DB8B 21,0C,05
       DB8E 80,C8,00
       DB91 20,2E
[3545] DB93 C1,E0,20       DATA  >C1E0,>2024,>C147,>04CC,>06A0,>25E0,>0283,>0001
       DB96 24,C1,47
       DB99 04,CC,06
       DB9C A0,25,E0
       DB9F 02,83,00
       DBA2 01
[3546] DBA3 16,24,05       DATA  >1624,>058C,>04C3,>1023,>0283,>0046,>161E
       DBA6 8C,04,C3
       DBA9 10,23,02
       DBAC 83,00,46
       DBAF 16,1E
[3547] DBB1 04,C2,06       DATA  >04C2,>06A0,>262E,>0283,>003A,>16F7,>C020,>202E
       DBB4 A0,26,2E
       DBB7 02,83,00
       DBBA 3A,16,F7
       DBBD C0,20,20
       DBC0 2E
[3548] DBC1 06,00,02       DATA  >0600,>0201,>0100,>0420,>210C,>06A0,>25E0
       DBC4 01,01,00
       DBC7 04,20,21
       DBCA 0C,06,A0
       DBCD 25,E0
[3549] DBCF C0,20,20       DATA  >C020,>2022,>1307,>06A0,>2646,>1005,>CB4E,>0016
       DBD2 22,13,07
       DBD5 06,A0,26

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0069 
EQUATES ALCS-359
       DBD8 46,10,05
       DBDB CB,4E,00
       DBDE 16
[3550] DBDF C3,A0,20       DATA  >C3A0,>2022,>0380,>D740,>F3E0,>20FC,>0380
       DBE2 22,03,80
       DBE5 D7,40,F3
       DBE8 E0,20,FC
       DBEB 03,80
[3551] DBED 06,A0,25       DATA  >06A0,>25C2,>04C4,>D123,>2662,>0974,>C808,>202C
       DBF0 C2,04,C4
       DBF3 D1,23,26
       DBF6 62,09,74
       DBF9 C8,08,20
       DBFC 2C
[3552] DBFD 06,A0,25       DATA  >06A0,>2594,>0464,>23F8,>0580,>0240,>FFFE
       DC00 94,04,64
       DC03 23,F8,05
       DC06 80,02,40
       DC09 FF,FE
[3553] DC0B C1,20,20       DATA  >C120,>2024,>A100,>1808,>8804,>2026,>1B05,>C160
       DC0E 24,A1,00
       DC11 18,08,88
       DC14 04,20,26
       DC17 1B,05,C1
       DC1A 60
[3554] DC1B 20,24,C8       DATA  >2024,>C804,>2024,>100A,>C120,>2028,>A100
       DC1E 04,20,24
       DC21 10,0A,C1
       DC24 20,20,28
       DC27 A1,00
[3555] DC29 88,04,20       DATA  >8804,>202A,>140C,>C160,>2028,>C804,>2028,>C1C5
       DC2C 2A,14,0C
       DC2F C1,60,20
       DC32 28,C8,04
       DC35 20,28,C1
       DC38 C5
[3556] DC39 02,09,00       DATA  >0209,>0008,>06A0,>262E,>0609,>16FC,>10B6
       DC3C 08,06,A0
       DC3F 26,2E,06
       DC42 09,16,FC
       DC45 10,B6
[3557] DC47 02,00,08       DATA  >0200,>0800,>10CC,>A005,>C800,>2022,>10AF,>A800
       DC4A 00,10,CC
       DC4D A0,05,C8
       DC50 00,20,22
       DC53 10,AF,A8
       DC56 00
[3558] DC57 20,2C,13       DATA  >202C,>13AC,>0200,>0B00,>10C2,>A005,>C1C0
       DC5A AC,02,00
       DC5D 0B,00,10
       DC60 C2,A0,05
       DC63 C1,C0
[3559] DC65 10,A6,A0       DATA  >10A6,>A005,>DDC0,>DDE0,>20DB,>10A1,>A005,>06A0
       DC68 05,DD,C0
       DC6B DD,E0,20
       DC6E DB,10,A1
       DC71 A0,05,06
       DC74 A0
[3560] DC75 25,66,C0       DATA  >2566,>C000,>1316,>0226,>FFF8,>8106,>1B02
       DC78 00,13,16
       DC7B 02,26,FF
       DC7E F8,81,06
       DC81 1B,02
[3561] DC83 05,14,10       DATA  >0514,>1096,>8594,>16F8,>89A4,>0002,>0002,>16F4

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0070 
EQUATES ALCS-359
       DC86 96,85,94
       DC89 16,F8,89
       DC8C A4,00,02
       DC8F 00,02,16
       DC92 F4
[3562] DC93 89,A4,00       DATA  >89A4,>0004,>0004,>16F0,>C0E6,>0006,>C250
       DC96 04,00,04
       DC99 16,F0,C0
       DC9C E6,00,06
       DC9F C2,50
[3563] DCA1 C4,03,C0       DATA  >C403,>C009,>16FC,>0224,>0008,>C804,>202A,>10EA
       DCA4 09,16,FC
       DCA7 02,24,00
       DCAA 08,C8,04
       DCAD 20,2A,10
       DCB0 EA
[3564] DCB1 A0,05,06       DATA  >A005,>06A0,>2566,>0226,>FFF8,>8106,>13E3
       DCB4 A0,25,66
       DCB7 02,26,FF
       DCBA F8,81,06
       DCBD 13,E3
[3565] DCBF C2,96,15       DATA  >C296,>1501,>050A,>8294,>16F7,>89A4,>0002,>0002
       DCC2 01,05,0A
       DCC5 82,94,16
       DCC8 F7,89,A4
       DCCB 00,02,00
       DCCE 02
[3566] DCCF 16,F3,89       DATA  >16F3,>89A4,>0004,>0004,>16EF,>C296,>1516
       DCD2 A4,00,04
       DCD5 00,04,16
       DCD8 EF,C2,96
       DCDB 15,16
[3567] DCDD C0,E6,00       DATA  >C0E6,>0006,>C253,>C4C0,>C0C9,>16FC,>C246,>6244
       DCE0 06,C2,53
       DCE3 C4,C0,C0
       DCE6 C9,16,FC
       DCE9 C2,46,62
       DCEC 44
[3568] DCED C2,86,02       DATA  >C286,>022A,>0008,>C0C6,>0643,>064A,>C693
       DCF0 2A,00,08
       DCF3 C0,C6,06
       DCF6 43,06,4A
       DCF9 C6,93
[3569] DCFB 06,49,16       DATA  >0649,>16FB,>0224,>0008,>C804,>202A,>10D9,>CB44
       DCFE FB,02,24
       DD01 00,08,C8
       DD04 04,20,2A
       DD07 10,D9,CB
       DD0A 44
[3570] DD0B 00,02,02       DATA  >0002,>0200,>0C00,>0460,>2432,>0460,>2494
       DD0E 00,0C,00
       DD11 04,60,24
       DD14 32,04,60
       DD17 24,94
[3571] DD19 C2,8B,02       DATA  >C28B,>0209,>0006,>C1A0,>202A,>0226,>FFF8,>C106
       DD1C 09,00,06
       DD1F C1,A0,20
       DD22 2A,02,26
       DD25 FF,F8,C1
       DD28 06
[3572] DD29 88,06,20       DATA  >8806,>2028,>1AF3,>C806,>202A,>06A0,>262E
       DD2C 28,1A,F3
       DD2F C8,06,20
       DD32 2A,06,A0

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0071 
EQUATES ALCS-359
       DD35 26,2E
[3573] DD37 DD,A0,20       DATA  >DDA0,>20E1,>0609,>16FA,>C580,>0206,>4000,>045A
       DD3A E1,06,09
       DD3D 16,FA,C5
       DD40 80,02,06
       DD43 40,00,04
       DD46 5A
[3574] DD47 C2,8B,04       DATA  >C28B,>04C0,>C30C,>1308,>06A0,>262E,>D020
       DD4A C0,C3,0C
       DD4D 13,08,06
       DD50 A0,26,2E
       DD53 D0,20
[3575] DD55 20,E1,06       DATA  >20E1,>06A0,>262E,>A003,>045A,>0209,>0004,>06A0
       DD58 A0,26,2E
       DD5B A0,03,04
       DD5E 5A,02,09
       DD61 00,04,06
       DD64 A0
[3576] DD65 26,2E,06       DATA  >262E,>06A0,>25C2,>0A40,>A003,>0609,>16F8
       DD68 A0,25,C2
       DD6B 0A,40,A0
       DD6E 03,06,09
       DD71 16,F8
[3577] DD73 04,5A,02       DATA  >045A,>0223,>FFD0,>0283,>000A,>1A05,>0223,>FFF9
       DD76 23,FF,D0
       DD79 02,83,00
       DD7C 0A,1A,05
       DD7F 02,23,FF
       DD82 F9
[3578] DD83 02,83,00       DATA  >0283,>0019,>1B01,>045B,>0200,>0A00,>0460
       DD86 19,1B,01
       DD89 04,5B,02
       DD8C 00,0A,00
       DD8F 04,60
[3579] DD91 24,32,02       DATA  >2432,>02E0,>83E0,>0200,>2032,>C330,>C270,>C830
       DD94 E0,83,E0
       DD97 02,00,20
       DD9A 32,C3,30
       DD9D C2,70,C8
       DDA0 30
[3580] DDA1 83,54,C8       DATA  >8354,>C830,>8356,>C050,>1D00,>9820,>4000
       DDA4 30,83,56
       DDA7 C0,50,1D
       DDAA 00,98,20
       DDAD 40,00
[3581] DDAF 20,FF,16       DATA  >20FF,>161D,>0699,>101B,>1E00,>02E0,>20DA,>C020
       DDB2 1D,06,99
       DDB5 10,1B,1E
       DDB8 00,02,E0
       DDBB 20,DA,C0
       DDBE 20
[3582] DDBF 20,2E,02       DATA  >202E,>0201,>20DB,>0202,>0004,>0420,>2118
       DDC2 01,20,DB
       DDC5 02,02,00
       DDC8 04,04,20
       DDCB 21,18
[3583] DDCD 70,00,09       DATA  >7000,>0950,>1610,>0982,>C001,>0201,>203C,>0420
       DDD0 50,16,10
       DDD3 09,82,C0
       DDD6 01,02,01
       DDD9 20,3C,04
       DDDC 20
[3584] DDDD 21,18,04       DATA  >2118,>04C8,>0602,>11D7,>D0F1,>0983,>A203
       DDE0 C8,06,02

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0072 
EQUATES ALCS-359
       DDE3 11,D7,D0
       DDE6 F1,09,83
       DDE9 A2,03
[3585] DDEB 04,5B,02       DATA  >045B,>02E0,>20DA,>04C0,>06C0,>0460,>2432,>0201
       DDEE E0,20,DA
       DDF1 04,C0,06
       DDF4 C0,04,60
       DDF7 24,32,02
       DDFA 01
[3586] DDFB 3F,40,02       DATA  >3F40,>0221,>FFF8,>C011,>1105,>8060,>202A
       DDFE 21,FF,F8
       DE01 C0,11,11
       DE04 05,80,60
       DE07 20,2A
[3587] DE09 16,F9,05       DATA  >16F9,>05CB,>045B,>0200,>0D00,>045B,>2D52,>5163
       DE0C CB,04,5B
       DE0F 02,00,0D
       DE12 00,04,5B
       DE15 2D,52,51
       DE18 63
[3588] DE19 64,83,84       DATA  >6483,>8455,>045C,>5B5F,>5EF0,>F003,>F0F0
       DE1C 55,04,5C
       DE1F 5B,5F,5E
       DE22 F0,F0,03
       DE25 F0,F0
[3589] DE27 47,00,00       DATA  >4700,>00C8,>3F38
       DE2A C8,3F,38
[3590] DE2D 55,54,4C LOW4  DATA  >5554,>4C54,>4142,>2022,>5041,>4420,>2020,>8300
       DE30 54,41,42
       DE33 20,22,50
       DE36 41,44,20
       DE39 20,20,83
       DE3C 00
[3591] DE3D 47,50,4C       DATA  >4750,>4C57,>5320,>83E0,>534F,>554E,>4420
       DE40 57,53,20
       DE43 83,E0,53
       DE46 4F,55,4E
       DE49 44,20
[3592] DE4B 84,00,56       DATA  >8400,>5644,>5052,>4420,>8800,>5644,>5053,>5441
       DE4E 44,50,52
       DE51 44,20,88
       DE54 00,56,44
       DE57 50,53,54
       DE5A 41
[3593] DE5B 88,02,56       DATA  >8802,>5644,>5057,>4420,>8C00,>5644,>5057
       DE5E 44,50,57
       DE61 44,20,8C
       DE64 00,56,44
       DE67 50,57
[3594] DE69 41,20,8C       DATA  >4120,>8C02,>5350,>4348,>5244,>9000,>5350,>4348
       DE6C 02,53,50
       DE6F 43,48,52
       DE72 44,90,00
       DE75 53,50,43
       DE78 48
[3595] DE79 57,54,94       DATA  >5754,>9400,>4752,>4D52,>4420,>9800,>4752
       DE7C 00,47,52
       DE7F 4D,52,44
       DE82 20,98,00
       DE85 47,52
[3596] DE87 4D,52,41       DATA  >4D52,>4120,>9802,>4752,>4D57,>4420,>9C00,>4752
       DE8A 20,98,02
       DE8D 47,52,4D
       DE90 57,44,20

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0073 
EQUATES ALCS-359
       DE93 9C,00,47
       DE96 52
[3597] DE97 4D,57,41       DATA  >4D57,>4120,>9C02,>5343,>414E,>2020,>000E
       DE9A 20,9C,02
       DE9D 53,43,41
       DEA0 4E,20,20
       DEA3 00,0E
[3598] DEA5 58,4D,4C       DATA  >584D,>4C4C,>4E4B,>2104,>4B53,>4341,>4E20,>2108
       DEA8 4C,4E,4B
       DEAB 21,04,4B
       DEAE 53,43,41
       DEB1 4E,20,21
       DEB4 08
[3599] DEB5 56,53,42       DATA  >5653,>4257,>2020,>210C,>564D,>4257,>2020
       DEB8 57,20,20
       DEBB 21,0C,56
       DEBE 4D,42,57
       DEC1 20,20
[3600] DEC3 21,10,56       DATA  >2110,>5653,>4252,>2020,>2114,>564D,>4252,>2020
       DEC6 53,42,52
       DEC9 20,20,21
       DECC 14,56,4D
       DECF 42,52,20
       DED2 20
[3601] DED3 21,18,56       DATA  >2118,>5657,>5452,>2020,>211C,>4453,>524C
       DED6 57,54,52
       DED9 20,20,21
       DEDC 1C,44,53
       DEDF 52,4C
[3602] DEE1 4E,4B,21       DATA  >4E4B,>2120,>4C4F,>4144,>4552,>2124,>4750,>4C4C
       DEE4 20,4C,4F
       DEE7 41,44,45
       DEEA 52,21,24
       DEED 47,50,4C
       DEF0 4C
[3603] DEF1 4E,4B,21       DATA ,>4E4B,>2100
       DEF4 00
[3604]               ***********************************************************

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0074 
EQUATES ALCS-359
Symbol Table #1 (New,alpha)  
0041 A          834C AAA        8302 AAA1       D267 ABANK      00CB ABSZ       
801E ACCEPT     00A4 ACCEPZ     03B7 ACCTRY     8302 ACCUM      03AE ACCVRA     
03AC ACCVRW     D32F AINIT      D345 AINITL     9800 ALCEND     00EC ALLZ       
0020 ALSUP      D1A3 AMAP       CA8F AMSCRU     D2FB AMSERR     D1B3 AMSMAP     
D1E8 AMSOFF     D201 AMSON      D1CE AMSPAS     D20B AMSSUB     00BB ANDZ       
D1BD APASS      00F9 APPENZ     835D ARG1       835E ARG2       835F ARG3       
8360 ARG4       8361 ARG5       8362 ARG6       C37C ARRAY      C38F ARRAY2     
D1D8 ARWOFF     D1F2 ARWON      A00A ASC        00DC ASCZ       007C ASSGNV     
00CC ATNZ       0032 ATNZZ      00F0 ATZ        602E AUTO1      0394 AUTTMP     
0008 BACK       8343 BASE       00F1 BASEZ      D3E8 BASIC      8350 BBB        
830C BBB1       D17F BEEP       00EE BEEPZ      0020 BKGD       D418 BLOAD      
0002 BREAK      008E BREAKZ     D3F8 BSAVE      0002 BUF        038E BUFEND     
8346 BUFLEV     830E BUFPNT     038C BUFSRT     8366 BYTE1      8367 BYTE2      
8368 BYTE3      830C BYTES      830A CALIST     009D CALLZ      C6C4 CATLOG     
837D CB         834E CCC        8308 CCC1       834A CCHAR      8308 CCPADD     
8308 CCPADR     8306 CCPPTR     0012 CFI        CA50 CFIFCH     CB14 CHAR1      
CB35 CHAR2      0018 CHAR2Z     CB4E CHAR3      004A CHAR3Z     CBEF CHAR4      
CC59 CHAR5      CCA8 CHAR6      CCF6 CHAR7      CD2F CHAR8      CD5D CHAR9      
CD68 CHARA      9CEA CHARS      8342 CHAT       6A78 CHKEND     C1EB CHKIN      
8302 CHKSUM     D35B CHRALL     0005 CHRCNT     D38B CHRLP      601C CHRTAB     
000D CHRTN      00D6 CHRZZ      830E CHSAV      0080 CIF        CA83 CIFSND     
00C5 CIRCUZ     800A CLOSE      00A0 CLOSEZ     C42C CLRFAC     0007 CLRLN      
8012 CLSALL     C277 CLSIT      C2A4 CLSNOE     003A COLON      00B5 COLONZ     
002C COMMAT     00B3 COMMAZ     0070 COMPCT     00B8 CONCZ      03BB CONFLG     
0075 CONT       A012 CONVER     00CD COSZ       8312 COUNT      0010 CPL        
03BC CPTEMP     A040 CPUBAS     8300 CPUOFF     0820 CRNBUF     08BE CRNEND     
007F CRUNCH     0390 CSNTMP     03BA CSNTP1     0010 CSNUM      0002 CSTRIN     
830E CURINC     8314 CURLIN     007E CURSOR     D5FE CUTDI2     D5F0 CUTDIR     
8334 DATA       834D DATAAD     0093 DATAZ      8354 DDD1       0089 DEFZ       
8002 DELET      0099 DELETZ     0087 DELREP     C972 DEV0       C98A DEV1       
C96F DEVASC     C953 DEVNAM     8317 DEVNUM     8316 DFLAG      8306 DFLTLM     
00E9 DIGITZ     008A DIMZ       D19B DIRECT     6FBA DISO       8000 DISPL1     
00A2 DISPLZ     00C4 DIVIZ      0003 DLETE      0024 DOLLAR     000A DOWN       
C99D DSKDSR     C290 DSKERR     C9D2 DSKNA1     C9DF DSKNA2     C9EB DSKNA3     
C9F9 DSKNA4     CA01 DSKNA5     C9B7 DSKNAM     C998 DSKSUB     0010 DSR        
C27B DSRCAL     8317 DSRFLG     000A DWNARR     007F EDGECH     66CF EDITLN     
D00D EDTZ00     D079 EDTZ01     D07E EDTZ02     D0AC EDTZ08     D000 EDTZZ0     
8350 EEE        8358 EEE1       0081 ELSEZ      02FE ENDSCR     008B ENDZ       
8332 ENLN       6A80 ENT09      6A7E ENTER      801C EOF        00CA EOFZ       
00BE EQUALZ     00EF ERASEZ     837C ERCODE     6E1B ERPNT5     6E0E ERPRNT     
C59A ERRBA      C586 ERRBLN     C57A ERRBS      C5A2 ERRBV      C58E ERRCC      
C592 ERRCIP     8322 ERRCOD     C5B1 ERRDAT     C5AE ERRDE1     C5B5 ERRFE      
C562 ERRFNN     C5A6 ERRIAL     C537 ERRIBS     C54F ERRIM      C5AA ERRINP     
C5B9 ERRIO      C5C8 ERRIVN     038A ERRLN      C582 ERRLNF     C58A ERRLTL     
C556 ERRMEM     C553 ERRMF1     C56E ERRMS      C54B ERRMUV     C529 ERRN01     
C52C ERRNO      C59E ERRNPP     C53B ERRNQS     C53F ERRNTL     C55E ERRNWF     
C547 ERROBE     C596 ERROLP     C4C9 ERROR      00A5 ERRORZ     C5C1 ERRPV      
C56A ERRRSC     C572 ERRRWG     C5BD ERRSNF     C543 ERRSNM     C566 ERRSNS     
C55A ERRSO      C57E ERRSSL     C576 ERRST      C530 ERRSY1     C533 ERRSYN     
CD77 ERRTAB     C5C5 ERRUC1     6A84 ERRZ       6A84 ERRZZ      C405 EXE01      
0076 EXECG      8376 EXPZ       00CE EXPZZ      832E EXTRAM     0046 F          
834B FAC1       8354 FAC10      8355 FAC11      8356 FAC12      8357 FAC13      
8358 FAC14      8359 FAC15      835A FAC16      835B FAC17      834C FAC2       
834D FAC3       834E FAC4       834F FAC5       8350 FAC6       8351 FAC7       
8352 FAC8       8353 FAC9       0006 FADD       000A FCOMP      D61C FCOPY      
D63B FCOPY1     D68C FCOPY2     D69A FCOPY3     D6A3 FCOPY4     D6A8 FCOPY5     
D6B3 FCOPY6     D6B6 FCOPY7     D6CB FCOPY8     D6CE FCOPY9     0009 FDIV       
834E FFF        8356 FFF1       8311 FIELD      0001 FILSPC     00FA FIXEDZ     
8345 FLAG       0001 FLG        0012 FLTINT     0008 FMUL       CF73 FNDLNE     
8317 FNUM       8317 FORNET     0009 FORW       008C FORZ       836C FPERAD     
D6E7 FREAD      D6F5 FREAD1     D70D FREAD2     830A FREEND     8340 FREPTR     
8308 FRESTA     2002 FSLOC      D714 FWRTE      D722 FWRTE1     D73A FWRTE2     
698C G698C      6D78 G6D78      216F GBASIC     C047 GC047      C0C7 GC0C7      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0075 
EQUATES ALCS-359
C0D5 GC0D5      C0E3 GC0E3      C0F4 GC0F4      C11C GC11C      C1C1 GC1C1      
C213 GC213      C224 GC224      C2B9 GC2B9      C308 GC308      C39D GC39D      
C3A1 GC3A1      C3BC GC3BC      C3BE GC3BE      C3C5 GC3C5      C3E0 GC3E0      
C3E3 GC3E3      C3F6 GC3F6      C429 GC429      C46D GC46D      CE22 GCE22      
CE3B GCE3B      CE48 GCE48      CE58 GCE58      CE5B GCE5B      CE99 GCE99      
CEAC GCEAC      CEB3 GCEB3      CEC8 GCEC8      CECF GCECF      CEE2 GCEE2      
CEF6 GCEF6      CF02 GCF02      CF05 GCF05      CF2C GCF2C      CF53 GCF53      
CF7D GCF7D      CF96 GCF96      CF9C GCF9C      C439 GCHR2      C484 GCHR3      
C49D GCHR4      D008 GD008      D020 GD020      D032 GD032      D048 GD048      
D056 GD056      D06B GD06B      D085 GD085      D097 GD097      D09E GD09E      
D0A1 GD0A1      D0C6 GD0C6      D0D4 GD0D4      D0E7 GD0E7      D0F3 GD0F3      
008E GDTECT     E025 GE025      C434 GETCHR     CA05 GETFN      CF69 GETLN2     
CA58 GETNUM     0071 GETSTR     CAB5 GISROF     CAA7 GISRON     C6CC GKCAT      
C6FD GKCAT2     C7ED GKCAT3     C85D GKCAT5     C902 GKCAT6     C886 GKCAT7     
C6CF GKCATA     C708 GKCATL     C740 GKCLSF     C896 GKDF       C8EF GKDIR      
C919 GKDNU1     C927 GKDNU2     C913 GKDNUM     C71A GKDONE     C75C GKDSR      
C750 GKDSRL     C939 GKDSTR     C8A8 GKDV       C731 GKERR      83C2 GKFLAG     
C90E GKFNA1     C84C GKFNAM     C8BA GKIF       C62D GKINIT     C8CC GKIV       
C614 GKLOAD     C765 GKPABD     C63D GKPEEK     C8DE GKPR       C843 GKSCL1     
C833 GKSCL2     C825 GKSCRL     C76E GKSCRN     C65D GKSETG     C654 GKSETV     
C81F GKTKE1     C820 GKTKE2     C817 GKTKE3     C80F GKTKEY     CA32 GLPARZ     
0087 GOSUBZ     0086 GOTOZ      0085 GOZ        8389 GRAMFL     0085 GREAD      
008C GREAD1     003E GREAT      00C0 GREATZ     0022 GRINT      802A GRMLST     
6034 GRSUB1     802C GRSUB2     802E GRSUB3     008B GVWITE     0086 GWRITE     
6036 GWSUB      D18D HONK       002D HYPEN      0084 IFZ        64EF ILLST      
00A3 IMAGEZ     835E INDEX      8315 INDEXC     C2BA INIT       2006 INITF      
6014 INITPG     8006 INPUT      03AA INPUTP     0092 INPUTZ     0004 INSRT      
00F5 INTERZ     8338 INTRIN     00CF INTZ       0084 IO         833C IOSTRT     
D234 ISROFF     D212 ISRON      8377 JOYX       8376 JOYY       8374 KEYBD      
CB00 KEYTAB     6022 KILSYM     C1BA LDDNE      C68A LDGRAM     C200 LDIPCS     
C1D2 LDNE2      C04E LDP1       C090 LDP2       C060 LDP4       C088 LDP5       
C0AB LDRD       C1E1 LDRET      C1E3 LDRET2     C0B2 LDTG       C156 LDTG2      
C135 LDTG3      0004 LEN        8360 LENCST     8362 LENWST     00D5 LENZ       
003C LESS       00BF LESSZ      008D LETZ       C010 LINK1      C019 LINK2      
C022 LINK3      C02B LINK4      C034 LINK5      C325 LINKIT     8030 LINPUT     
00AA LINPUZ     8312 LINUM      0002 LISTZ      6A74 LLIST      8336 LNBUF      
A01C LNKRTN     00C9 LNZ        C040 LOAD       C69C LOADDT     0371 LODFLG     
00D0 LOGZ       D89D LOW1       D8A5 LOW2       D8AD LOW3       DE2D LOW4       
00B7 LPARZ      8348 LSUBP      00DF MAXZ       0072 MEMCHK     0008 MERGEZ     
002D MINUS      00C2 MINUSZ     00E0 MINZ       D559 MKDIR      D571 MKDIR2     
D5A9 MKDIR3     D5BB MKDIR4     8302 MNUM       837A MOTION     039E MRGPAB     
6065 MSG10      629B MSG109     62A6 MSG130     62B0 MSG135     6076 MSG14      
6083 MSG16      609C MSG17      60AD MSG19      60BB MSG24      60D2 MSG25      
60E4 MSG28      60F9 MSG34      6110 MSG36      611C MSG39      6128 MSG40      
6137 MSG43      6148 MSG44      6159 MSG47      616F MSG48      6189 MSG49      
6198 MSG51      61AD MSG54      6324 MSG56      61BE MSG57      61CC MSG60      
61DB MSG61      62C5 MSG62      61EB MSG67      61FA MSG69      6215 MSG70      
622D MSG74      623A MSG78      624D MSG79      6257 MSG81      626F MSG83      
627B MSG84      6286 MSG97      6048 MSGBRK     6319 MSGCF      630A MSGCIS     
6040 MSGFST     6053 MSGTA      00C3 MULTZ      0088 MVDN       0089 MVUP       
D438 MYDOIT     D44A MYSAL      6038 MZMSG      AE00 MZSUB      03BE NEWTOP     
0096 NEXTZ      CA61 NGOOD      0039 NINE       0009 NLEN       02E2 NLNADD     
8314 NMLEN      830C NMPTR      C41F NOERR      0374 NOTONE     00BD NOTZ       
D10E NOUSR      800E NREAD      8328 NUDTAB     0023 NUMBER     00FD NUMBEZ     
0000 NUMBR      00C8 NUMCOZ     00E8 NUMERZ     CA47 NUMFCH     00C8 NUMZ       
8306 OFFADD     0060 OFFSET     8310 OLDS       03BC OLDTOP     0005 OLDZ       
0378 ONECHR     009B ONZ        8008 OPEN       C225 OPENIT     009F OPENZ      
8317 OPTFLG     009E OPTIOZ     00BA ORZ        00F7 OUTPUZ     000A PABLEN     
8304 PABPTR     C1EB PAGE       C347 PAR01      0001 PARCOM     0074 PARSE      
CA23 PATH       8304 PC         C2CA PEEK       C2E8 PEEK2      C316 PEEK5      
C6B9 PEEKDT     C666 PEEKG      C644 PEEKV      002E PERIOD     00FB PERMAZ     
0079 PGMCHR     832C PGMPTR     8352 PHADDR     835D PHDATA     8300 PHLEN      
8301 PHRADD     00DD PIZ        C670 PKG        C6A9 PKGRAM     C64E PKV        
002B PLUS       00C1 PLUSZ      C680 POG        D123 POKAGN     C676 POKEG      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0076 
EQUATES ALCS-359
D178 POKEND     D116 POKER      C619 POKEV      00D9 POSZ       C623 POV        
D173 PREG0      D16C PREG1      D165 PREG2      D15E PREG3      D157 PREG4      
D150 PREG5      D149 PREG6      8344 PRGFLG     8004 PRINT      009C PRINTZ     
D4ED PROAGN     D51E PRODSK     D523 PROEND     D4FC PRONP      D4DE PROT       
83CE PRTNFN     03B7 PSCFG      835E PTCBED     830E PTCCIP     8308 PTCCIS     
8314 PTCCPH     8304 PTEBSL     8312 PTFBPH     8300 PTFBSL     830C PTFCIP     
8306 PTFCIS     8302 PTLBSL     834F PTLCIL     8310 PTLCIP     830A PTLCIS     
8316 PTLCPH     C3FA PUSH       C602 QTOFF      C60E QTOFF1     C5F0 QTON       
C5FB QTON1      0022 QUOTE      8389 RAMFLG     8386 RAMFRE     830A RAMPTR     
8384 RAMTOP     8378 RANDOM     0095 RANDOZ     0002 RANGE      00E2 RANZ       
8358 READ       C263 READIT     6A86 READL1     6A8A READL3     6A76 READLN     
0097 READZ      8022 REC        0006 RECALL     08C0 RECBUF     8307 RECLEN     
00DE RECZ       C3E5 REF01      00F4 RELATZ     009A REMZ       D496 RENAGN     
D488 RENAME     D4D2 RENDSK     D4D7 RENEND     D4A5 RENNP      0006 RESEQZ     
800C RESTOR     0094 RESTOZ     CF68 RETNOS     0088 RETURZ     8375 RKEY       
D5C2 RMDIR      D5CF RMDIR2     03A5 RNDX1      03A0 RNDX2      00D7 RNDZ       
0006 RNM        00B6 RPARZ      0012 RPL        00E1 RPTZZ      8388 RSTK       
0082 RTNB       8326 RTNG       CF65 RTNSET     00A9 RUNZ       D73F RWDSR      
000B SADD       03B9 SAPROT     0388 SAVEVP     0007 SAVEZ      D0AF SAVLIN     
D0CC SAVLN5     0384 SBUFLV     007D SCHSYM     008F SCNSMT     0008 SCR        
02E0 SCRNBS     0083 SCROLL     D536 SCSAGN     D52A SCSI       D869 SECT0F     
D77F SECTO1     D7A0 SECTO2     D7C3 SECTO3     D7C5 SECTO4     D7DD SECTO5     
D7E8 SECTO6     D7F8 SECTO7     D810 SECTO8     D81B SECTO9     D82D SECTOA     
D83D SECTOB     D83F SECTOC     D856 SECTOD     D85B SECTOE     D88A SECTOG     
D890 SECTOH     D892 SECTOI     D74C SECTOR     D76C SECTOS     D87A SECWRT     
0003 SEETWO     00D8 SEGZZ      003B SEMICO     00B4 SEMICZ     00F6 SEQUEZ     
0386 SEXTRM     0398 SFLAG      00D1 SGNZZ      8375 SIGNZ      00D2 SINZ       
D258 SISROF     D22B SISRON     03B4 SIZCCP     00EB SIZEZ      03B6 SIZREC     
03B8 SIZXPT     0396 SLSUBP     007B SMB        831E SMTSRT     CA85 SNDASS     
CA7C SNDER      8300 SP00       8302 SP02       8304 SP04       8306 SP06       
0020 SPACE      CFA3 SPCCHR     007E SPEED      0382 SPGMPT     8369 SPKSTS     
834B SPLFLG     03AA SPNUM      6016 SPRINT     0300 SPRSAL     0780 SPRVB      
8308 SPSAL      830A SPTMP      00D3 SQRZ       8020 SRDATA     831C SREF       
0082 SSEPZ      039A SSTEMP     039C SSTMP2     000C SSUB       8372 STACK      
830A STADDR     0372 START      00B2 STEPZ      83BD STKMAX     83AF STKMIN     
8330 STLN       0098 STOPZ      8314 STORE      8302 STPT       831A STREND     
CA38 STRFCH     CA3E STRGET     0065 STRING     00C7 STRINZ     8364 STRLEN     
8312 STRPTR     8318 STRSP      0065 STRVAL     00DB STRZZ      8324 STVSPT     
CA88 SUBLP3     00A8 SUBNDZ     8373 SUBSTK     833A SUBTAB     00A7 SUBXTZ     
00A1 SUBZ       007A SYM        0376 SYMBOL     833E SYMTAB     0000 SYNCHK     
63A5 SZNEW      601E SZRUN      65C9 SZSIZE     0392 TABSAV     00FC TABZ       
8310 TAG        C148 TAG0       C15D TAG5       C160 TAG6       C192 TAG7       
C19F TAG9       C19C TAGA       C1A8 TAGB       C1A5 TAGC       00D4 TANZ       
8310 TBLPTR     8316 TEMP       8354 TEMP1      8356 TEMP2      8364 TEMP4      
8366 TEMP5      8368 TEMP6      00B0 THENZ      8379 TIMER      8351 TIMLEN     
0034 TONE1      0036 TONE2      6030 TOPL02     601A TOPL10     63DD TOPL15     
6433 TOPL42     6462 TOPL55     6372 TOPLEV     8310 TOPSTK     834C TOTTIM     
00B1 TOZ        CE49 TRAC05     CE72 TRAC09     CE76 TRAC10     CE95 TRAC12     
CEF8 TRAC50     CF09 TRAC51     CF16 TRAC55     CE1F TRACBK     0090 TRACEZ     
0083 TREMZ      00EA UALPHZ     008F UNBREZ     D50B UNPRO      00C8 UNQSTZ     
0091 UNTRAZ     D3DE UPAB       000B UPARR      00F8 UPDATZ     000B UPMV       
D3AD USER       D100 USERFG     00ED USINGZ     C3C7 VAL01      03B2 VALIDL     
03B0 VALIDP     00FE VALIDZ     00DA VALZ       8300 VAR0       830B VAR2       
830E VAR4       8310 VAR5       8311 VAR6       8312 VAR7       8314 VAR9       
832A VARA       8316 VARB       8308 VARC       00F3 VARIAZ     8301 VARV       
8320 VARW       8304 VARY       8306 VARY2      837B VDPSTS     837B VDPSTT     
008A VGWITE     D58C VOL1ST     D58A VOL2ND     0078 VPOP       0077 VPUSH      
0958 VRAMVS     0379 VRMSND     03C0 VROAZ      001C VWIDTH     00A6 WARNZ      
6A82 WARNZZ     835A WRITE      C5DE WRNINP     C5E4 WRNIO      C5EA WRNLNF     
C5CC WRNNO      C5D8 WRNNPP     C5D2 WRNST      0003 X2         0073 XCNS       
8316 XFLAG      00BC XORZ       0030 ZERO       

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0077 
EQUATES ALCS-359
Symbol Table #2 (New,value)  
0000 NUMBR      0000 SYNCHK     0001 FILSPC     0001 FLG        0001 PARCOM     
0002 BREAK      0002 BUF        0002 CSTRIN     0002 LISTZ      0002 RANGE      
0003 DLETE      0003 SEETWO     0003 X2         0004 INSRT      0004 LEN        
0005 CHRCNT     0005 OLDZ       0006 FADD       0006 RECALL     0006 RESEQZ     
0006 RNM        0007 CLRLN      0007 SAVEZ      0008 BACK       0008 FMUL       
0008 MERGEZ     0008 SCR        0009 FDIV       0009 FORW       0009 NLEN       
000A DOWN       000A DWNARR     000A FCOMP      000A PABLEN     000B SADD       
000B UPARR      000B UPMV       000C SSUB       000D CHRTN      0010 CPL        
0010 CSNUM      0010 DSR        0012 CFI        0012 FLTINT     0012 RPL        
0018 CHAR2Z     001C VWIDTH     0020 ALSUP      0020 BKGD       0020 SPACE      
0022 GRINT      0022 QUOTE      0023 NUMBER     0024 DOLLAR     002B PLUS       
002C COMMAT     002D HYPEN      002D MINUS      002E PERIOD     0030 ZERO       
0032 ATNZZ      0034 TONE1      0036 TONE2      0039 NINE       003A COLON      
003B SEMICO     003C LESS       003E GREAT      0041 A          0046 F          
004A CHAR3Z     0060 OFFSET     0065 STRING     0065 STRVAL     0070 COMPCT     
0071 GETSTR     0072 MEMCHK     0073 XCNS       0074 PARSE      0075 CONT       
0076 EXECG      0077 VPUSH      0078 VPOP       0079 PGMCHR     007A SYM        
007B SMB        007C ASSGNV     007D SCHSYM     007E CURSOR     007E SPEED      
007F CRUNCH     007F EDGECH     0080 CIF        0081 ELSEZ      0082 RTNB       
0082 SSEPZ      0083 SCROLL     0083 TREMZ      0084 IFZ        0084 IO         
0085 GOZ        0085 GREAD      0086 GOTOZ      0086 GWRITE     0087 DELREP     
0087 GOSUBZ     0088 MVDN       0088 RETURZ     0089 DEFZ       0089 MVUP       
008A DIMZ       008A VGWITE     008B ENDZ       008B GVWITE     008C FORZ       
008C GREAD1     008D LETZ       008E BREAKZ     008E GDTECT     008F SCNSMT     
008F UNBREZ     0090 TRACEZ     0091 UNTRAZ     0092 INPUTZ     0093 DATAZ      
0094 RESTOZ     0095 RANDOZ     0096 NEXTZ      0097 READZ      0098 STOPZ      
0099 DELETZ     009A REMZ       009B ONZ        009C PRINTZ     009D CALLZ      
009E OPTIOZ     009F OPENZ      00A0 CLOSEZ     00A1 SUBZ       00A2 DISPLZ     
00A3 IMAGEZ     00A4 ACCEPZ     00A5 ERRORZ     00A6 WARNZ      00A7 SUBXTZ     
00A8 SUBNDZ     00A9 RUNZ       00AA LINPUZ     00B0 THENZ      00B1 TOZ        
00B2 STEPZ      00B3 COMMAZ     00B4 SEMICZ     00B5 COLONZ     00B6 RPARZ      
00B7 LPARZ      00B8 CONCZ      00BA ORZ        00BB ANDZ       00BC XORZ       
00BD NOTZ       00BE EQUALZ     00BF LESSZ      00C0 GREATZ     00C1 PLUSZ      
00C2 MINUSZ     00C3 MULTZ      00C4 DIVIZ      00C5 CIRCUZ     00C7 STRINZ     
00C8 NUMCOZ     00C8 NUMZ       00C8 UNQSTZ     00C9 LNZ        00CA EOFZ       
00CB ABSZ       00CC ATNZ       00CD COSZ       00CE EXPZZ      00CF INTZ       
00D0 LOGZ       00D1 SGNZZ      00D2 SINZ       00D3 SQRZ       00D4 TANZ       
00D5 LENZ       00D6 CHRZZ      00D7 RNDZ       00D8 SEGZZ      00D9 POSZ       
00DA VALZ       00DB STRZZ      00DC ASCZ       00DD PIZ        00DE RECZ       
00DF MAXZ       00E0 MINZ       00E1 RPTZZ      00E2 RANZ       00E8 NUMERZ     
00E9 DIGITZ     00EA UALPHZ     00EB SIZEZ      00EC ALLZ       00ED USINGZ     
00EE BEEPZ      00EF ERASEZ     00F0 ATZ        00F1 BASEZ      00F3 VARIAZ     
00F4 RELATZ     00F5 INTERZ     00F6 SEQUEZ     00F7 OUTPUZ     00F8 UPDATZ     
00F9 APPENZ     00FA FIXEDZ     00FB PERMAZ     00FC TABZ       00FD NUMBEZ     
00FE VALIDZ     02E0 SCRNBS     02E2 NLNADD     02FE ENDSCR     0300 SPRSAL     
0371 LODFLG     0372 START      0374 NOTONE     0376 SYMBOL     0378 ONECHR     
0379 VRMSND     0382 SPGMPT     0384 SBUFLV     0386 SEXTRM     0388 SAVEVP     
038A ERRLN      038C BUFSRT     038E BUFEND     0390 CSNTMP     0392 TABSAV     
0394 AUTTMP     0396 SLSUBP     0398 SFLAG      039A SSTEMP     039C SSTMP2     
039E MRGPAB     03A0 RNDX2      03A5 RNDX1      03AA INPUTP     03AA SPNUM      
03AC ACCVRW     03AE ACCVRA     03B0 VALIDP     03B2 VALIDL     03B4 SIZCCP     
03B6 SIZREC     03B7 ACCTRY     03B7 PSCFG      03B8 SIZXPT     03B9 SAPROT     
03BA CSNTP1     03BB CONFLG     03BC CPTEMP     03BC OLDTOP     03BE NEWTOP     
03C0 VROAZ      0780 SPRVB      0820 CRNBUF     08BE CRNEND     08C0 RECBUF     
0958 VRAMVS     2002 FSLOC      2006 INITF      216F GBASIC     6014 INITPG     
6016 SPRINT     601A TOPL10     601C CHRTAB     601E SZRUN      6022 KILSYM     
602E AUTO1      6030 TOPL02     6034 GRSUB1     6036 GWSUB      6038 MZMSG      
6040 MSGFST     6048 MSGBRK     6053 MSGTA      6065 MSG10      6076 MSG14      
6083 MSG16      609C MSG17      60AD MSG19      60BB MSG24      60D2 MSG25      
60E4 MSG28      60F9 MSG34      6110 MSG36      611C MSG39      6128 MSG40      
6137 MSG43      6148 MSG44      6159 MSG47      616F MSG48      6189 MSG49      
6198 MSG51      61AD MSG54      61BE MSG57      61CC MSG60      61DB MSG61      
61EB MSG67      61FA MSG69      6215 MSG70      622D MSG74      623A MSG78      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0078 
EQUATES ALCS-359
624D MSG79      6257 MSG81      626F MSG83      627B MSG84      6286 MSG97      
629B MSG109     62A6 MSG130     62B0 MSG135     62C5 MSG62      630A MSGCIS     
6319 MSGCF      6324 MSG56      6372 TOPLEV     63A5 SZNEW      63DD TOPL15     
6433 TOPL42     6462 TOPL55     64EF ILLST      65C9 SZSIZE     66CF EDITLN     
698C G698C      6A74 LLIST      6A76 READLN     6A78 CHKEND     6A7E ENTER      
6A80 ENT09      6A82 WARNZZ     6A84 ERRZ       6A84 ERRZZ      6A86 READL1     
6A8A READL3     6D78 G6D78      6E0E ERPRNT     6E1B ERPNT5     6FBA DISO       
8000 DISPL1     8002 DELET      8004 PRINT      8006 INPUT      8008 OPEN       
800A CLOSE      800C RESTOR     800E NREAD      8012 CLSALL     801C EOF        
801E ACCEPT     8020 SRDATA     8022 REC        802A GRMLST     802C GRSUB2     
802E GRSUB3     8030 LINPUT     8300 CPUOFF     8300 PHLEN      8300 PTFBSL     
8300 SP00       8300 VAR0       8301 PHRADD     8301 VARV       8302 AAA1       
8302 ACCUM      8302 CHKSUM     8302 MNUM       8302 PTLBSL     8302 SP02       
8302 STPT       8304 PABPTR     8304 PC         8304 PTEBSL     8304 SP04       
8304 VARY       8306 CCPPTR     8306 DFLTLM     8306 OFFADD     8306 PTFCIS     
8306 SP06       8306 VARY2      8307 RECLEN     8308 CCC1       8308 CCPADD     
8308 CCPADR     8308 FRESTA     8308 PTCCIS     8308 SPSAL      8308 VARC       
830A CALIST     830A FREEND     830A PTLCIS     830A RAMPTR     830A SPTMP      
830A STADDR     830B VAR2       830C BBB1       830C BYTES      830C NMPTR      
830C PTFCIP     830E BUFPNT     830E CHSAV      830E CURINC     830E PTCCIP     
830E VAR4       8310 OLDS       8310 PTLCIP     8310 TAG        8310 TBLPTR     
8310 TOPSTK     8310 VAR5       8311 FIELD      8311 VAR6       8312 COUNT      
8312 LINUM      8312 PTFBPH     8312 STRPTR     8312 VAR7       8314 CURLIN     
8314 NMLEN      8314 PTCCPH     8314 STORE      8314 VAR9       8315 INDEXC     
8316 DFLAG      8316 PTLCPH     8316 TEMP       8316 VARB       8316 XFLAG      
8317 DEVNUM     8317 DSRFLG     8317 FNUM       8317 FORNET     8317 OPTFLG     
8318 STRSP      831A STREND     831C SREF       831E SMTSRT     8320 VARW       
8322 ERRCOD     8324 STVSPT     8326 RTNG       8328 NUDTAB     832A VARA       
832C PGMPTR     832E EXTRAM     8330 STLN       8332 ENLN       8334 DATA       
8336 LNBUF      8338 INTRIN     833A SUBTAB     833C IOSTRT     833E SYMTAB     
8340 FREPTR     8342 CHAT       8343 BASE       8344 PRGFLG     8345 FLAG       
8346 BUFLEV     8348 LSUBP      834A CCHAR      834B FAC1       834B SPLFLG     
834C AAA        834C FAC2       834C TOTTIM     834D DATAAD     834D FAC3       
834E CCC        834E FAC4       834E FFF        834F FAC5       834F PTLCIL     
8350 BBB        8350 EEE        8350 FAC6       8351 FAC7       8351 TIMLEN     
8352 FAC8       8352 PHADDR     8353 FAC9       8354 DDD1       8354 FAC10      
8354 TEMP1      8355 FAC11      8356 FAC12      8356 FFF1       8356 TEMP2      
8357 FAC13      8358 EEE1       8358 FAC14      8358 READ       8359 FAC15      
835A FAC16      835A WRITE      835B FAC17      835D ARG1       835D PHDATA     
835E ARG2       835E INDEX      835E PTCBED     835F ARG3       8360 ARG4       
8360 LENCST     8361 ARG5       8362 ARG6       8362 LENWST     8364 STRLEN     
8364 TEMP4      8366 BYTE1      8366 TEMP5      8367 BYTE2      8368 BYTE3      
8368 TEMP6      8369 SPKSTS     836C FPERAD     8372 STACK      8373 SUBSTK     
8374 KEYBD      8375 RKEY       8375 SIGNZ      8376 EXPZ       8376 JOYY       
8377 JOYX       8378 RANDOM     8379 TIMER      837A MOTION     837B VDPSTS     
837B VDPSTT     837C ERCODE     837D CB         8384 RAMTOP     8386 RAMFRE     
8388 RSTK       8389 GRAMFL     8389 RAMFLG     83AF STKMIN     83BD STKMAX     
83C2 GKFLAG     83CE PRTNFN     9800 ALCEND     9CEA CHARS      A00A ASC        
A012 CONVER     A01C LNKRTN     A040 CPUBAS     AE00 MZSUB      C010 LINK1      
C019 LINK2      C022 LINK3      C02B LINK4      C034 LINK5      C040 LOAD       
C047 GC047      C04E LDP1       C060 LDP4       C088 LDP5       C090 LDP2       
C0AB LDRD       C0B2 LDTG       C0C7 GC0C7      C0D5 GC0D5      C0E3 GC0E3      
C0F4 GC0F4      C11C GC11C      C135 LDTG3      C148 TAG0       C156 LDTG2      
C15D TAG5       C160 TAG6       C192 TAG7       C19C TAGA       C19F TAG9       
C1A5 TAGC       C1A8 TAGB       C1BA LDDNE      C1C1 GC1C1      C1D2 LDNE2      
C1E1 LDRET      C1E3 LDRET2     C1EB CHKIN      C1EB PAGE       C200 LDIPCS     
C213 GC213      C224 GC224      C225 OPENIT     C263 READIT     C277 CLSIT      
C27B DSRCAL     C290 DSKERR     C2A4 CLSNOE     C2B9 GC2B9      C2BA INIT       
C2CA PEEK       C2E8 PEEK2      C308 GC308      C316 PEEK5      C325 LINKIT     
C347 PAR01      C37C ARRAY      C38F ARRAY2     C39D GC39D      C3A1 GC3A1      
C3BC GC3BC      C3BE GC3BE      C3C5 GC3C5      C3C7 VAL01      C3E0 GC3E0      
C3E3 GC3E3      C3E5 REF01      C3F6 GC3F6      C3FA PUSH       C405 EXE01      
C41F NOERR      C429 GC429      C42C CLRFAC     C434 GETCHR     C439 GCHR2      
C46D GC46D      C484 GCHR3      C49D GCHR4      C4C9 ERROR      C529 ERRN01     

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0079 
EQUATES ALCS-359
C52C ERRNO      C530 ERRSY1     C533 ERRSYN     C537 ERRIBS     C53B ERRNQS     
C53F ERRNTL     C543 ERRSNM     C547 ERROBE     C54B ERRMUV     C54F ERRIM      
C553 ERRMF1     C556 ERRMEM     C55A ERRSO      C55E ERRNWF     C562 ERRFNN     
C566 ERRSNS     C56A ERRRSC     C56E ERRMS      C572 ERRRWG     C576 ERRST      
C57A ERRBS      C57E ERRSSL     C582 ERRLNF     C586 ERRBLN     C58A ERRLTL     
C58E ERRCC      C592 ERRCIP     C596 ERROLP     C59A ERRBA      C59E ERRNPP     
C5A2 ERRBV      C5A6 ERRIAL     C5AA ERRINP     C5AE ERRDE1     C5B1 ERRDAT     
C5B5 ERRFE      C5B9 ERRIO      C5BD ERRSNF     C5C1 ERRPV      C5C5 ERRUC1     
C5C8 ERRIVN     C5CC WRNNO      C5D2 WRNST      C5D8 WRNNPP     C5DE WRNINP     
C5E4 WRNIO      C5EA WRNLNF     C5F0 QTON       C5FB QTON1      C602 QTOFF      
C60E QTOFF1     C614 GKLOAD     C619 POKEV      C623 POV        C62D GKINIT     
C63D GKPEEK     C644 PEEKV      C64E PKV        C654 GKSETV     C65D GKSETG     
C666 PEEKG      C670 PKG        C676 POKEG      C680 POG        C68A LDGRAM     
C69C LOADDT     C6A9 PKGRAM     C6B9 PEEKDT     C6C4 CATLOG     C6CC GKCAT      
C6CF GKCATA     C6FD GKCAT2     C708 GKCATL     C71A GKDONE     C731 GKERR      
C740 GKCLSF     C750 GKDSRL     C75C GKDSR      C765 GKPABD     C76E GKSCRN     
C7ED GKCAT3     C80F GKTKEY     C817 GKTKE3     C81F GKTKE1     C820 GKTKE2     
C825 GKSCRL     C833 GKSCL2     C843 GKSCL1     C84C GKFNAM     C85D GKCAT5     
C886 GKCAT7     C896 GKDF       C8A8 GKDV       C8BA GKIF       C8CC GKIV       
C8DE GKPR       C8EF GKDIR      C902 GKCAT6     C90E GKFNA1     C913 GKDNUM     
C919 GKDNU1     C927 GKDNU2     C939 GKDSTR     C953 DEVNAM     C96F DEVASC     
C972 DEV0       C98A DEV1       C998 DSKSUB     C99D DSKDSR     C9B7 DSKNAM     
C9D2 DSKNA1     C9DF DSKNA2     C9EB DSKNA3     C9F9 DSKNA4     CA01 DSKNA5     
CA05 GETFN      CA23 PATH       CA32 GLPARZ     CA38 STRFCH     CA3E STRGET     
CA47 NUMFCH     CA50 CFIFCH     CA58 GETNUM     CA61 NGOOD      CA7C SNDER      
CA83 CIFSND     CA85 SNDASS     CA88 SUBLP3     CA8F AMSCRU     CAA7 GISRON     
CAB5 GISROF     CB00 KEYTAB     CB14 CHAR1      CB35 CHAR2      CB4E CHAR3      
CBEF CHAR4      CC59 CHAR5      CCA8 CHAR6      CCF6 CHAR7      CD2F CHAR8      
CD5D CHAR9      CD68 CHARA      CD77 ERRTAB     CE1F TRACBK     CE22 GCE22      
CE3B GCE3B      CE48 GCE48      CE49 TRAC05     CE58 GCE58      CE5B GCE5B      
CE72 TRAC09     CE76 TRAC10     CE95 TRAC12     CE99 GCE99      CEAC GCEAC      
CEB3 GCEB3      CEC8 GCEC8      CECF GCECF      CEE2 GCEE2      CEF6 GCEF6      
CEF8 TRAC50     CF02 GCF02      CF05 GCF05      CF09 TRAC51     CF16 TRAC55     
CF2C GCF2C      CF53 GCF53      CF65 RTNSET     CF68 RETNOS     CF69 GETLN2     
CF73 FNDLNE     CF7D GCF7D      CF96 GCF96      CF9C GCF9C      CFA3 SPCCHR     
D000 EDTZZ0     D008 GD008      D00D EDTZ00     D020 GD020      D032 GD032      
D048 GD048      D056 GD056      D06B GD06B      D079 EDTZ01     D07E EDTZ02     
D085 GD085      D097 GD097      D09E GD09E      D0A1 GD0A1      D0AC EDTZ08     
D0AF SAVLIN     D0C6 GD0C6      D0CC SAVLN5     D0D4 GD0D4      D0E7 GD0E7      
D0F3 GD0F3      D100 USERFG     D10E NOUSR      D116 POKER      D123 POKAGN     
D149 PREG6      D150 PREG5      D157 PREG4      D15E PREG3      D165 PREG2      
D16C PREG1      D173 PREG0      D178 POKEND     D17F BEEP       D18D HONK       
D19B DIRECT     D1A3 AMAP       D1B3 AMSMAP     D1BD APASS      D1CE AMSPAS     
D1D8 ARWOFF     D1E8 AMSOFF     D1F2 ARWON      D201 AMSON      D20B AMSSUB     
D212 ISRON      D22B SISRON     D234 ISROFF     D258 SISROF     D267 ABANK      
D2FB AMSERR     D32F AINIT      D345 AINITL     D35B CHRALL     D38B CHRLP      
D3AD USER       D3DE UPAB       D3E8 BASIC      D3F8 BSAVE      D418 BLOAD      
D438 MYDOIT     D44A MYSAL      D488 RENAME     D496 RENAGN     D4A5 RENNP      
D4D2 RENDSK     D4D7 RENEND     D4DE PROT       D4ED PROAGN     D4FC PRONP      
D50B UNPRO      D51E PRODSK     D523 PROEND     D52A SCSI       D536 SCSAGN     
D559 MKDIR      D571 MKDIR2     D58A VOL2ND     D58C VOL1ST     D5A9 MKDIR3     
D5BB MKDIR4     D5C2 RMDIR      D5CF RMDIR2     D5F0 CUTDIR     D5FE CUTDI2     
D61C FCOPY      D63B FCOPY1     D68C FCOPY2     D69A FCOPY3     D6A3 FCOPY4     
D6A8 FCOPY5     D6B3 FCOPY6     D6B6 FCOPY7     D6CB FCOPY8     D6CE FCOPY9     
D6E7 FREAD      D6F5 FREAD1     D70D FREAD2     D714 FWRTE      D722 FWRTE1     
D73A FWRTE2     D73F RWDSR      D74C SECTOR     D76C SECTOS     D77F SECTO1     
D7A0 SECTO2     D7C3 SECTO3     D7C5 SECTO4     D7DD SECTO5     D7E8 SECTO6     
D7F8 SECTO7     D810 SECTO8     D81B SECTO9     D82D SECTOA     D83D SECTOB     
D83F SECTOC     D856 SECTOD     D85B SECTOE     D869 SECT0F     D87A SECWRT     
D88A SECTOG     D890 SECTOH     D892 SECTOI     D89D LOW1       D8A5 LOW2       
D8AD LOW3       DE2D LOW4       E025 GE025      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0080 
EQUATES ALCS-359
Symbol Table #4 (Def,alpha)  
0034 ACCTON     835C ARG        0032 ATN        0036 BADTON     003B BITREV     
0012 CFI        0014 CNS        002C COS        0010 CSN        8372 DATSTK     
0001 DIVZER     0003 ERRIOV     0006 ERRLOG     0005 ERRNIP     0002 ERRSNN     
0004 ERRSQR     0028 EXP        834A FAC        0006 FADD       000A FCOMP      
0009 FDIV       0008 FMUL       836C FPERAD     0007 FSUB       0038 GETSPACE   
0022 INT        0010 LINK       0018 LOCASE     002A LOG        8370 MEMSIZ     
003D NAMLNK     8300 PAD        0024 PWR        0012 RETURN     000B SADD       
000F SCOMP      000E SDIV       8375 SGN        002E SIN        000D SMUL       
8400 SOUND      0026 SQR        000C SSUB       837C STATUS     0016 STCASE     
8373 SUBSTK     0030 TAN        0007 TRIGER     004A UPCASE     836E VSPTR      
0001 WRNOV      837F XPT        837E YPT        

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0081 
EQUATES ALCS-359
Symbol Table #8 (Def,value)  
0001 DIVZER     0001 WRNOV      0002 ERRSNN     0003 ERRIOV     0004 ERRSQR     
0005 ERRNIP     0006 ERRLOG     0006 FADD       0007 FSUB       0007 TRIGER     
0008 FMUL       0009 FDIV       000A FCOMP      000B SADD       000C SSUB       
000D SMUL       000E SDIV       000F SCOMP      0010 CSN        0010 LINK       
0012 CFI        0012 RETURN     0014 CNS        0016 STCASE     0018 LOCASE     
0022 INT        0024 PWR        0026 SQR        0028 EXP        002A LOG        
002C COS        002E SIN        0030 TAN        0032 ATN        0034 ACCTON     
0036 BADTON     0038 GETSPACE   003B BITREV     003D NAMLNK     004A UPCASE     
8300 PAD        834A FAC        835C ARG        836C FPERAD     836E VSPTR      
8370 MEMSIZ     8372 DATSTK     8373 SUBSTK     8375 SGN        837C STATUS     
837E YPT        837F XPT        8400 SOUND      
